一、代码示例
import os
import pytest
class Test1:
def test_1(self):
print("this is test1")
assert 1==1
def test_2(self):
print("this is test2")
assert 1+2 ==3
class Test2:
def test_3(self):
print("this is test3")
assert 3+1 ==4
def test_4(self):
print("this is test4")
assert 3+2 ==5
if __name__ =="__main__":
# 生成报告所需数据,并存于/tmp目录下
pytest.main(['test_lesson.py', '-s', '--alluredir', '../report/tmp'])
# 用allure工具去读取转化源数据得到可视化报告,生成测试报告。
os.system('allure generate ../report/tmp -o ../report/report --clean')
# os.system('allure serve ../report/tmp -o ../report/report --clean')
二、定制化执行与参数解析
1、存放目录 --alluredir
pytest.main(['test_测试用例文件名.py', '-s', '--alluredir', '../report/tmp'])
2、生成报告所需数据,并存于/tmp目录下 ‘–alluredir’, ‘…/report/tmp’
pytest.main(['test_lesson.py', '-s', '--alluredir', '../report/tmp'])
3、生成allure报告 cmd指令:os.system() -o :生成 --clean:清除报告数据
1、allure generate,不会自动开启浏览器报告服务,会生成html文件,报告产物:report.tmp + report.report
os.system('allure generate ../report/tmp -o ../report/report --clean')
2、serve,会自动开启浏览器报告服务,不会生成html文件,报告产物:report.tmp
os.system('allure serve ../report/tmp -o ../report/report --clean')
4、执行所有的测试用例
pytest.main(['test_测试用例文件名.py'])
5、输出print信息 -s
pytest.main(['test_测试用例文件名.py'], '-s')
6、简化打印信息 -sq
-s 输出打印
-q 简化打印信息
pytest.main(['test_测试用例文件名.py'], '-sq')
7、选择对应的标签 -m
例:只执行冒烟测试用例
# 1、用 @pytest.mark.smoke 标记用例
# 2、用 '-m=smoke' 指定执行该用例
pytest.main(['test_测试用例文件名.py','-s','-m=smoke'])
'''
一个:
'-m','test1'
多个:
'-m','test1 or test2'
排除法:
'-m','not test1 '
排除法 多个:
'-m','not (test1 or test2)'
'''
8、匹配用例名称(可精准/模糊匹配) -k
同时执行2个文件:
方式1:指定运行2个文件
pytest -s test_1.py test_2.py
方式2:-k 匹配,运行所有名称为 test 的用例文件
pytest -k test
9、节点,多层化 -v
示例:
test_lesson.py::TesLesson::test_lesson_add # 测试文件::测试类::测试方法
pytest -v
test_lesson.py::TesLesson::test_lesson_add
示例:
1、只执行Test1 的测试用例,执行命令如下:
pytest -case test_xt.py::Test1
2、只执行Test2中的test_3,执行命令如下:
pytest -case test_xt.py::Test2::test_3
3、多条件,执行命令如下:
pytest -case test_xt.py::Test2::test_3 test_xt.py::Test1::test_1
10、跳过/条件跳过
pytest.main(['-rs','test01.py'])
用-rs执行,跳过原因才会显示SKIPPED [1] test01.py:415: 跳过Test类,会跳过类中所有方法.
1、skip跳过,相当于注释的效果
跳过测试函数的最简单方法是使用跳过装饰器标记它,可以传递一个可选的原因。
2、skipif有条件的跳过,在执行过程中会对项目的一些前置条件进行判断**
如果你想有条件地跳过某些内容,则可以使用skipif代替。 if条件为真,跳过。
11、运行pytest 报告生成的路径
1、只执行test_case目录下某一条用例,报告生成目录在test_case目录下。
2、执行工程级run.bat文件时,报告生成目录在工程级目录下。
三、示例:只执行冒烟用例
import pytest
@pytest.mark.smoke
def test_1():
print('测试用例1')
def test_2():
print('测试用例2')
if __name__ =="__main__":
# '-m=smoke' # 只执行test_1
pytest.main(['001_pytest_测试用例分类_只执行冒烟用例_@pytest_mark_smoke.py','-s','-m=smoke'])