pytest测试框架学习+测试报告(pycharm)更新中~

环境准备

1.下载模块:pytest,allure-pytest(生成测试报告用)
2.下载allure插件:https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/
将插件bin目录添加到环境变量
3.JAVA环境配置

测试用例格式

1.类测试用例:以首字母大写Test开头,类方法以test开头
2.函数测试用例:以test开头

执行测试用例

  • 法一

点击绿色按钮执行用例
需要将pycharm运行框架改为pytest,绿色箭头就会出现
(files–>settings–>tools–>python integrated tools–>default Test runner–>pytest)

pytest测试框架学习+测试报告(pycharm)更新中~_第1张图片
pytest测试框架学习+测试报告(pycharm)更新中~_第2张图片如果还是没有出现绿色箭头,将原先脚本的配置全部删除↑↑↑

  • 法二
    终端命令行执行脚本(最终是通过pytest.exe程序执行脚本)
    pytest 模块名
  • 法三:代码执行
    pytest.main([ ]),列表中传执行的字符串选项
    • 生成测试报告
    1. 生成测试结果:
      pytest --alluredir = result(测试结果存放路径) --clean-allure test.py(执行模块)
    2. 将结果生成测试报告
      allure generate result(测试结果存放路径:即第一步的生成的result目录) -c - o report(测试报告存放路径)

测试固件

  • unittest风格测试固件
    setup开头的函数在执行测试用例前执行
    teardown开头的函数在测试用例执行完后执行
def setup_module():  #模块setup固件
    print('in setup_module')
def teardown_module():#模块teardown固件
    print('in teardown module')
def setup_function():#模块函数setup固件
    print('in set_up_function')
def teardown_function():#模块teardown固件
    print('in teardown_function')

终端输出结果:
pytest测试框架学习+测试报告(pycharm)更新中~_第3张图片

  • pytest风格setup测试固件:@pytest.fixture( ),可以不加括号,如果不自定义参数
    参数:
    scope:作用域(默认为function),其他可选项:session>moudle>class>function
    name:测试用例重命名
@pytest.fixture
def teardown():
    print('in pytest_teardown')
    a = ['asd','asd']
    return a
def test5(setup,teardown):
    print('teardown = ',teardown)
    print('in test5:------')

输出结果
在这里插入图片描述

  • pytest风格的 ‘teardown’ 固件1,在"setup"函数中定义"teardown"函数
    注意:先注册的"teardown"函数后执行,执行顺序与注册顺序相反
@pytest.fixture
def teardown(request):  #只能是request参数 
    def teardown1():
    	print('in teardown1')
    def teardown2():
    	print('in teardown2')
    #注册清理函数
    request.addfinalizer(teardown2)
    request.addfinalizer(teardown1)
def test1(teardown):
    print('in test1')

返回
pytest测试框架学习+测试报告(pycharm)更新中~_第4张图片

  • pytest风格的 ‘teardown’ 固件2,执行完yield语句并将yield语句返回给函数,后面的代码相当于teardown函数
@pytest.fixture
def teardown(request):  #只能是request参数
    print('in fixture')
    yield 'return_vaue'
    print('in teardown')
def test1(teardown):
    print(teardown)
    print('in test1')

返回
pytest测试框架学习+测试报告(pycharm)更新中~_第5张图片

pytest精进

你可能感兴趣的:(pytest,python入门,软件测试,python,软件测试)