首页 > 技术文章 > pytest初始化清除与挑选用例执行

fairytalk 2020-07-31 00:05 原文

pytest

# pytest 命令行参数
pytest cases

# 输出打印结果
pytest cases -s

# 输出更详细信息
pytest cases -sv

# 打印报告
pytest cases --html=报告名称.html --self-contained-html   (--self-contained-html 此参数为不生成css目录)
pytest cases --html=report.html --self-contained-html
# C:\Python\Python37\Lib\site-packages\pytest_html\plugin.py文件 解决报告乱码
初始化清除
  • 模块级别

    def setup_module():
        print('\n *** 初始化-模块 ***')
    
    
    def teardown_module():
        print('\n ***   清除-模块 ***')
    
  • 类级别

    class Test_错误密码:
    
        @classmethod
        def setup_class(cls):
            print('\n === 初始化-类 ===')
    
        @classmethod
        def teardown_class(cls):
            print('\n === 清除 - 类 ===')
    
  • 方法级别

    class Test_错误密码:
    	def setup_method(self):
            print('\n --- 初始化-方法  ---')
    
        def teardown_method(self):
            print('\n --- 清除  -方法 ---')
    
  • 目录级别

    我们在需要初始化的目录下面创建 一个名为 conftest.py 的文件,里面内容如下所示

    import pytest 
    
    @pytest.fixture(scope='package',autouse=True)
    def st_emptyEnv():
        print(f'\n#### 初始化-目录甲')
        yield
        
        print(f'\n#### 清除-目录甲')
    
挑选用例执行
# 根据需求逐级递减
pytest cases\登录\test_错误登录.py::Test_错误密码::test_C001001
  • 根据名字

    # pytest -k 名字 -sv
    pytest -k C001001 -s
    pytest -k "not C001001" -s
    pytest -k "错 and 密码2" -s
    pytest -k "错 or 密码2" -s
    
  • 根据标签

    如果是要统一执行散落的一些测试用例,可以选择加标签,可以给方法或类,以及整个文件添加标签

    import pytest
    
    class Test_错误密码2:
        @pytest.mark.标签名      # <------标签
        def test_C001021(self):
            print('\n用例C001021')
            assert 1 == 1
    
    pytest cases -m 标签名 -s    # <------命令行执行执行
    

    可以这样定义一个全局变量 pytestmark 为 整个模块文件 设定标签

    import pytest
    pytestmark = pytest.mark.网页测试
    

    如果你需要定义多个标签,可以定义一个列表

    import pytest
    pytestmark = [pytest.mark.网页测试, pytest.mark.登录测试]
    

推荐阅读