pytest第二版 进阶学习

pytest 框架实现一些前后置(固件,夹具)的处理,常用三种。

一、setup/teardown,setup_class/teardown_class

为什么需要这些功能
比如: web自动化执行用例之前, 需要打开浏览器, 执行之后需要关闭浏览器

import pytest

# 所有的用例之前都会执行一次
def setup():
    print('\n在执行测试用例之前初始化的代码: 打开浏览器')
    

# 在类中只会执行一次
def setup_class():
    print('\n在执行每个类之前的初始化工作')


@pytest.mark.smoke
def test_html_001():
    print('这是一个html的测试函数')


def test_html_002():
    print('这是一个html_002的测试函数')


# 所有的用例执行之后执行一次
def teardown():
    print('\n在执行测试用例之后的扫尾的代码 关闭浏览器')
    
# 最后的扫尾工作,只执行一次
def teardown_class():
    print('\n在每个类执行后的扫尾的工作: 比如销毁日志,销毁链接')
二、使用fixture装饰器来实现部分用例的前后置

装饰器
@pytest.fixture(scope=’’, name=’’, params=’’, autouse=’’, ids=’’)

  1. scope表示的是被@pytest.fixture标记的方法的作用域,默认为function, 还有class, module, package/session
  2. params: 参数化
  3. autouse: 自动使用,默认为false
  4. ids: 当使用params参数化的时候,给每一个值设置一个变量
  5. name: 给表示的是被@pytest.fixture标记的方法取一个别名(当取了别名之后, 那么原来的名称就不用了)

import pytest


@pytest.fixture(scope='function', name='project', params=['成龙', '甄子丹', '李连杰'], autouse=True, ids=['cl', 'zzd', 'llj'])
def my_fixture_01(request):
    print('这是前后置的方法,可以实现部分以及全部用例的前后置')

    yield request.param

    print('只是后置的方法')


class TestFixture:
    def test_fixture(self):
        print('这是一个test_fixture的测试函数')


def test_fixture_001(project):
    print('这是一个test_fixture_001的测试函数  '+ str(my_fixture_01))

执行结果

src/html_web/test_fixture.py::TestFixture::test_fixture[cl] 这是前后置的方法,可以实现部分以及全部用例的前后置
这是一个test_fixture的测试函数
PASSED只是后置的方法

src/html_web/test_fixture.py::TestFixture::test_fixture[zzd] 这是前后置的方法,可以实现部分以及全部用例的前后置
这是一个test_fixture的测试函数
PASSED只是后置的方法

src/html_web/test_fixture.py::TestFixture::test_fixture[llj] 这是前后置的方法,可以实现部分以及全部用例的前后置
这是一个test_fixture的测试函数
PASSED只是后置的方法

src/html_web/test_fixture.py::test_fixture_001[cl] 这是前后置的方法,可以实现部分以及全部用例的前后置
这是一个test_fixture_001的测试函数  <function my_fixture_01 at 0x7fb1d92e9170>
PASSED只是后置的方法

src/html_web/test_fixture.py::test_fixture_001[zzd] 这是前后置的方法,可以实现部分以及全部用例的前后置
这是一个test_fixture_001的测试函数  <function my_fixture_01 at 0x7fb1d92e9170>
PASSED只是后置的方法

src/html_web/test_fixture.py::test_fixture_001[llj] 这是前后置的方法,可以实现部分以及全部用例的前后置
这是一个test_fixture_001的测试函数  <function my_fixture_01 at 0x7fb1d92e9170>
PASSED只是后置的方法

=============================================================== 6 passed, 9 deselected in 0.04s ===============================================================
三、通过conftest.py和@pytest.fixture()结合使用实现全局的前置应用(比如:项目的全局登陆,模块的全局处理)
  1. conftest.py文件是单独存放的一个家具配置文件,名称是不能改的
  2. 用处可以在不同的py文件中使用fixture函数
  3. conftest.py为全局配置,原则上需要和运行的用例放在同一层,并且不做任何import倒入的操作

总结: setup/teardown setup_class/teardown_clss它是作用于所有的用例或者类
@pytest.fixture() 它的作用是既可以部分也可以全部前后置
conftest.py 和 @pytest.fixtrue()结合使用,作用于全局的前后置

四、pytest结合allure-pytest插件生成allure测试报告
  1. 下载,解压,配置path路径

    https:github.com/allure-framework/allure2/releases
    path路径配置
    验证: allure -version
    问题: dos可以验证但是pycharm验证失败,需重启pycharm

  2. 生成allure报告: os.system(‘allure generate ./temp -o ./report --clean’)
    1. allure generate 命令,固定写法
    2. ./temp 临时的json格式报告的路径
    3. -o 输出output
    4. ./report 生成的allure报告的路径
    5. –clean 清空./report 路径原来的报告
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一叶知秋的BLOG

创作不易 请多多关注

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值