Pytest_Allure报告定制化执行与执行参数解析

一、代码示例

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'])

你可能感兴趣的:(Python,UI自动化,python)