python pytest基本使用_pytest测试框架基本使用

pytest测试框架 执行方式

以函数的方式简单执行

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

test_pytest.py

import pytest

def test_001():

print("test_01")

def test_002():

print("test_02")

if __name__ == '__main__':

#main方法第一个参数-v打印详细信息, 第二个执行的模块名称

pytest.main(['-v',"test_pytest.py"])

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

80ae13f4dfda0840ac45bf503435020f.png

函数或方法名的命名规范

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

import pytest

def 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并没有运行

20f37becb47abfd766d7c966be4938c3.png

DOS命令执行

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

e155f411bf633e211efcb34b0084d9c9.png

断言方法

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

assert几种断言方法

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

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

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

assert ==断言

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

def add(x,y):

return x + x

def test_add():

assert add(1,1) == 2

执行后 在控制台上的显示

fc6359c27a64520e65247ebd77a44792.png

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

这个错误 很明显了

26bb51a14228c569911f8ac7813a0d9c.png

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的可以显示具体那个函数方法执行成功或失败

10410fd830a2bab5d3d6e8d5ad8cf220.png

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

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

def test_id():

userid =1234

print(userid)

03ee96265d40b87cea605337bd7250d8.png

pytest -k 按分类执行测试点

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

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

import pytest

@pytest.mark.run

def test_001():

print("test_01")

@pytest.mark.run

def test_002():

print("test_02")

@pytest.mark.run

def test_03():

print("add_test")

def add(x,y):

return x + x

@pytest.mark.stop

def test_add():

assert add(1,1) == 2

@pytest.mark.stop

def test_id():

userid =1234

print(userid)

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

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

a16973effa701c46d2eeecb50c391352.png

执行多个测试分类

ef4fcb3dfc08eaddd3d115e01c18c281.png

-m 进行分组执行

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

c79d678041c2c38791986f96adb27106.png

-x 执行失败立刻停止

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

ad4be18d9d0c72f0601d41013b16d2dc.png

–maxfail执行失败的最大次数

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

3cf822f7a7830894d8b3b440ebb6e5e0.png

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

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

33261afa0af53f1ec797ac8684cfb74d.png

pytest API测试实战

以登录接口为例

import pytest

import requests

def 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"])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值