pytest--python的一种测试框架--pytest常用断言类型

一、pytest常用断言类型

等于:==
不等于:!=
大于:>
小于:<
属于:in
不属于:not in
大于等于:>=
小于等于:<=
是:is
不是:is not

python 复制代码
def test_two():
    assert 1==1
    assert 1 != 2
    assert 1 < 2
    assert 1 > 2
    assert 1 >= 1
    assert 1 <= 1

    assert 'a' in 'abc'
    assert 'a' not in 'bcd'
    assert True is True
    assert False is not True

二、requests+pytest

python 复制代码
import requests
def test_mobile():
    r = requests.get(url="https://api.binstd.com/shouji/query", params={
        "shouji": "13456755448",
        "appkey": "e1d1e3c8fb254b33"
    })
    print(r.status_code)
    assert r.status_code==200
    result=r.json()
    assert result['status']==0
    assert result['msg'] == "ok"
    assert result['result']['shouji'] == "13456755448"
    assert result['result']['province'] == "浙江"
    assert result['result']['city'] == "杭州"
    assert result['result']['company'] =="中国移动"
    assert result['result']['cardtype'] is None
    assert result['result']['creacode'] == "0571"

这个操作,针对之前的requests模块对他进行一个优化对其自身用例进行改进初步实现我们用pytest进行接口测试的测试用例

三、pytest配置项

pytest.ini(固定写法,你如果写错是不生效的),ini在很多框架里面都是作为配置项去使用的。在写路径的时候是可以指定到某个具体的文件的

python 复制代码
[pytest]
testpaths=./testcase

把要执行的目录直接配置到此处,通过终端输入运行pytest命令即可

四、pytest的setup/teardown(前置步骤和后置步骤)

在我们做自动化里面,前置和后置基本上是一个功能,比如我们在做UI自动化,前置需要打开浏览器,后置需要关闭浏览器。在做接口测试自动化,比如我们前置需要去登陆或者插入一些测试数据,做一些测试用例执行前的一个工作,在做完测试用例之后我们需要在后置步骤里面去做一些数据的清理,防止产生一些垃圾数据。

setup/teardown其实分为四个等级分别是:

**模块级--setup_module/teardown_module--开始于模块始末,生效一次;

函数级--setup_function/teardown_function--对每条函数用例生效(不在类中);

类级--setup_class/teardown_class--只在类中前后运行一次(在类中);

方法级--setup_method/teardown_method--开始于方法始末(在类中)。

**

如何将一个.py文件中两条绿色三角符号的测试用例都给运行出来?

答:

python 复制代码
def test_one():
    expect=1
    actual=1
    assert expect==actual#测试专用语句:assert,识别期望与实际值是否相等

def test_two():
    expect=1
    actual=1
    assert expect==actual#测试专用语句:assert,识别期望与实际值是否相等

if __name__=='__main__':
    pytest.main()#会把我们当前用例中的其他测试用例符合条件的都执行

4.1模块级示例:可以看到模块级setup_module/teardown_module开始于模块始末,仅执行一次

python 复制代码
import requests

def setup_module():
    print("准备测试数据")
def teardown_module():
    print("清理测试数据")

def test_mobile1():
    expect=1
    actual=1
    assert expect==actual#测试专用语句:assert,识别期望与实际值是否相等
def test_mobile2():
    expect=1
    actual=1
    assert expect==actual#测试专用语句:assert,识别期望与实际值是否相等
def test_mobile3():
    expect=1
    actual=1
    assert expect==actual#测试专用语句:assert,识别期望与实际值是否相等
def test_mobile4():
    expect=1
    actual=1
    assert expect==actual#测试专用语句:assert,识别期望与实际值是否相等

if __name__=='__main__':
    pytest.main()

4.2函数级示例:可以看到每一条函数执行之前和执行之后各执行一次,setup_function/teardown_function,函数执行多少次它执行多少次。这是不在类class中的

python 复制代码
import requests

def setup_function():
    print("准备测试数据")
def teardown_function():
    print("清理测试数据")

def test_mobile1():
    expect=1
    actual=1
    assert expect==actual#测试专用语句:assert,识别期望与实际值是否相等
def test_mobile2():
    expect=1
    actual=1
    assert expect==actual#测试专用语句:assert,识别期望与实际值是否相等
def test_mobile3():
    expect=1
    actual=1
    assert expect==actual#测试专用语句:assert,识别期望与实际值是否相等
def test_mobile4():
    expect=1
    actual=1
    assert expect==actual#测试专用语句:assert,识别期望与实际值是否相等

if __name__=='__main__':
    pytest.main()

4.3类级示例:可以看到在类中前后运行一次

python 复制代码
import requests

class TestMobile:
    def setup_class(self):
        print("准备测试数据")

    def teardown_class(self):
        print("清理测试数据")

    def test_mobile1(self):
        expect = 1
        actual = 1
        assert expect == actual  # 测试专用语句:assert,识别期望与实际值是否相等

    def test_mobile2(self):
        expect = 1
        actual = 1
        assert expect == actual  # 测试专用语句:assert,识别期望与实际值是否相等

    def test_mobile3(self):
        expect = 1
        actual = 1
        assert expect == actual  # 测试专用语句:assert,识别期望与实际值是否相等

    def test_mobile4(self):
        expect = 1
        actual = 1
        assert expect == actual  # 测试专用语句:assert,识别期望与实际值是否相等



if __name__=='__main__':
    pytest.main()

4.4方法级示例:方法在类中,类中的方法级,可以看到在类中的每个函数都执行一次

python 复制代码
import requests

class TestMobile:
    def setup_method(self):
        print("准备测试数据")

    def teardown_method(self):
        print("清理测试数据")

    def test_mobile1(self):
        expect = 1
        actual = 1
        assert expect == actual  # 测试专用语句:assert,识别期望与实际值是否相等

    def test_mobile2(self):
        expect = 1
        actual = 1
        assert expect == actual  # 测试专用语句:assert,识别期望与实际值是否相等

    def test_mobile3(self):
        expect = 1
        actual = 1
        assert expect == actual  # 测试专用语句:assert,识别期望与实际值是否相等

    def test_mobile4(self):
        expect = 1
        actual = 1
        assert expect == actual  # 测试专用语句:assert,识别期望与实际值是否相等



if __name__=='__main__':
    pytest.main()
相关推荐
橙色小博35 分钟前
PyTorch中的各种损失函数的详细解析与通俗理解!
人工智能·pytorch·python·深度学习·神经网络·机器学习
小森77671 小时前
(三)机器学习---线性回归及其Python实现
人工智能·python·算法·机器学习·回归·线性回归
-XWB-2 小时前
【LLM】使用MySQL MCP Server让大模型轻松操作本地数据库
人工智能·python·自然语言处理
小萌新上大分2 小时前
SpringCloudGateWay
java·开发语言·后端·springcloud·springgateway·cloudalibaba·gateway网关
PacosonSWJTU3 小时前
python基础-13-处理excel电子表格
开发语言·python·excel
froginwe113 小时前
Perl 条件语句
开发语言
小军要奋进3 小时前
httpx模块的使用
笔记·爬虫·python·学习·httpx
啥都鼓捣的小yao3 小时前
利用C++编写操作OpenCV常用操作
开发语言·c++·opencv
灼华十一3 小时前
Golang系列 - 内存对齐
开发语言·后端·golang
程序媛学姐3 小时前
SpringRabbitMQ消息模型:交换机类型与绑定关系
java·开发语言·spring