1.执行全部的用例
在我们对环境初始化和定制化清除以后,我们可以通过pytest.fixture去操作执行用例。根据命令: fixture(scope='function',params=None,autouse=False,ids=None,name=None)去对方法、类、模块、包进行调用。
新增configtest.py文件
import pytest
import os
@pytest.fixture(scope='function',autouse=True)
def start_running():
print('---接口自动化开始执行---')
#测试报告用例数据清除
try:
for one in os.listdir('../report/tmp'):
if 'json' in one or 'txt' in one :
os.remove(f'../report/tmp/{one}')
except:
print('第一次执行用例,还没有生成过报告')
yield
print('---接口自动化结束执行---')
注意:如果有多个.py文件需要调用同一方法,将方法写入conftest.py配置文件,test_xxx.py文件会被自动被pytest进行搜索执行。
2. 定制化用例执行
目前执行全部用例已经实现,但是需要对特定的业务进行测试,需要筛选出对应的业务模块部分测试。
输入命令,执行全部用例命令:
pytest.main(['test_shop.py','-s'])
定制化命令,执行组装后的流程用例:
输入定制化命令,执行定制化的用例命令:
@pytest.mark.shop
@pytest.mark.shop_list
-
-m 选择对应的标签
'一个':'-m','lesson_add'
'多个':'-m','lesson_add or lesson_list''
'排除法':'-m','not lesson_add'
'排除法 多个':'-m','not lesson_add or lesson_list' -
-k 匹配用例名称
匹配:可全名,也可以模糊
lesson_1.py lesson_2.py---需要制定运行2个pytest -k lesson
-
-v节点-多层化-#测试文件::测试类::测试方法
test_lession.py::TestLession::test_lesson_addpytest -v
test_lesson.py::TestLesson::test_lesson_add
-sq:简化打印消息
-s 输出打印
-q 简化打印信息跳过/条件跳过
在自动化测试过程中,经常会遇到功能阻塞、功能未实现、环境等一系列外部因素问题导致的一些用例执行不了,就可以通过skip用例,进行注释或删掉,后面还要进行恢复操作。
pytest.main('-rs','test01.py')
test_lesson.py::TestLesson::test_lesson_add
对应的配置文件,pytest.ini:
[pytest]
markers=
login:Run login case
myshop:Run myshop case
3.pytest数据驱动:pytest.mark.parametrize()
pytest中数据驱动需要一个装饰器pytest.mark.parametrize(参数1,参数2),里面传多个值第一个参数是字符串,第二个参数是列表,列表里面嵌套元组。
ex:
@pytest.mark.parametrize('inBody,reqData',get_excel_data('登录模块','Login'))
显示结果:
({'username': 'sa122', 'password': '124'}, {'code': 9999, 'data': '', 'flag': '12', 'msg': '输入的密码错误!', 'success': False})