首页 > 编程知识 正文

python测试框架pytest,搭建pytest测试框架

时间:2023-05-06 08:49:38 阅读:197551 作者:4632

目录 pytest测试框架 执行方式以函数的方式简单执行函数或方法名的命名规范DOS命令执行 断言方法assert几种断言方法assert ==断言assert in 包含断言assert is 断言前后的值相等 pytest 常用命令详解pytest -v输出详细的信息pytest -s输出测试函数或测试方法print内容pytest -k 按分类执行测试点-m 进行分组执行-x 执行失败立刻停止--maxfail执行失败的最大次数--tb=line 错误信息在一行展示 pytest API测试实战

pytest测试框架 执行方式 以函数的方式简单执行

先了解一下Pytest的执行的方式

test_pytest.py

import pytestdef test_001(): print("test_01")def test_002(): print("test_02")if __name__ == '__main__': #main方法第一个参数-v打印详细信息, 第二个执行的模块名称 pytest.main(['-v',"test_pytest.py"])

看一下输出结果 上面划红线的是执行了多少个测试用例 中间的是执行的测试模块 下面的是有几个是通过的以及时间

函数或方法名的命名规范

函数名或类的方法名须以test为开头否则无法执行 现在演示一下

import pytestdef test_001(): print("test_01")def test_002(): print("test_02")def add_test(): print("add_test")if __name__ == '__main__': pytest.main(['-v',"test_pytest.py"])

看一下到底能否运行

可以看到还是两个方法 add_test并没有运行

DOS命令执行

切换到当前项目的路径下 输入pytest -v test_pytest.py 执行

断言方法

pytest 断言使用python的原生断言方法 assert

assert几种断言方法

1、 == 内容和类型必须同时满足相等

2 、in 实际结果包含预期结果

3、 is 断言前后两个值 相等

assert ==断言

断言 x + y相加后 实际结果是否等于预期结果

def add(x,y): return x + xdef test_add(): assert add(1,1) == 2

执行后 在控制台上的显示

如果把预期结果故意改错 看看 控制台会显示什么

这个错误 很明显了

assert in 包含断言

断言str1字符串中是否包含GO

str1 = "python GO PHP JAVA "def test_in(): assert "GO" in str1 assert is 断言前后的值相等

判断两个字符串是否相等

str1 = "admin"str2 ="admin"def test_is(): assert str2 is str1

用== 也是一样的

str1 = "admin"str2 ="admin"def test_is(): assert str2 == str1 pytest 常用命令详解

1、-v输出详细的信息

2、-s 输出测试函数或测试方法print内容

3、-k 按分类执行测试点

4、-m 进行分组执行

5、-x 执行失败立刻停止

6、–maxfail执行失败的最大次数

7、–tb=line 错误信息在一行展示

pytest -v输出详细的信息

这个命令前面已经展示后很多次了 所以这里把-v去掉看看执行后 会显示什么 做个对比

上面的是去掉-v后 下面是加上-v 参数执行 有-v的可以显示具体那个函数方法执行成功或失败

pytest -s输出测试函数或测试方法print内容

输入print语句内容 比如说要打印查看一下 用户的id

def test_id(): userid =1234 print(userid)

pytest -k 按分类执行测试点

如果有十个测试用例 现在有需求只需要执行5个用例 那么可以用装饰器给用例分成两个分类 分别执行

@python.可耐的小天鹅 是固定写法 后面的是自己起的名字 现在分了两个类 run和stop

import pytest@pytest.可耐的小天鹅.rundef test_001(): print("test_01")@pytest.可耐的小天鹅.rundef test_002(): print("test_02")@pytest.可耐的小天鹅.rundef test_03(): print("add_test")def add(x,y): return x + x@pytest.可耐的小天鹅.stopdef test_add(): assert add(1,1) == 2@pytest.可耐的小天鹅.stopdef test_id(): userid =1234 print(userid)

现在只执行run分类的方法或函数

pytest -v -k “run” test_pytest.py 执行

执行多个测试分类

-m 进行分组执行

-m 和-k 执行起来 区别就是 分类不需要带引号 其他都差不多

-x 执行失败立刻停止

不加-x 与加上-x的前后对比 没有-x 执行失败后 后面的会继续执行 带上-x后 执行失败后 后面的不会继续执行

–maxfail执行失败的最大次数

如果设定最大失败的次数是2 那么如果两个用例执行失败 后面的会停止执行 如果是2次以下会继续执行

–tb=line 错误信息在一行展示

没有这个命令的话 如果有大量的用例执行错误 那么 查看报错信息就很费劲了

pytest API测试实战

以登录接口为例

import pytestimport requestsdef test_login(): r = requests.post( url="http://127.0.0.1:5000/login/", data={ "phone":1232432241, "password":123456 }, headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36" } ) print(r.text) assert r.json()['data']['id'] == 28239 and r.json()['msg'] == "登录成功"if __name__ == '__main__': pytest.main(["-v","test_pytest.py"])

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。