zoukankan      html  css  js  c++  java
  • pytest测试框架(二)

    十一、conftest.py和@pytest.fixture结合使用实现全局的前置应用

    例如:项目的全局登录、模块的全局处理

    1.conftest.py是一个单独存放的一个夹具配置文件,名称是固定的不能够更改

    2.作用:可以在不同的py文件使用同一个fixture函数

    3.conftest.py文件需要与运行的测试用例在同一层路径下,并且不需要做任何的import导入操作

     1 import pytest
     2 
     3 data = ['成都', '大理', '西安']
     4 
     5 
     6 @pytest.fixture(scope="function", params=data, name="fixtest")
     7 def fixture_test(request):
     8     # 注意:这里返回的param不用s,否则会报错,request也是固定写法
     9     print('测试前置')
    10     yield request.param
    11     print('测试后置')

    总结一下:

      1.setup/teardown/setup_class/teardown_class 它是作用于所有测试用例和所有类

      2.@pytest.fixture()  它的作用既可以部分也可以全部前后置

      3.conftest.py和@pytest.fixture()结合使用,作用于全局的前后置

    十二、断言

    pytest的断言用assert即可,它不像unittest一样有很多的断言方式

    assert 'h' in 'hello'

    十三、pytest之生成测试报告---> allure-pytest插件

    1.安装allure-pytest:

    pip install allure-pytest

    2.安装allure(需依赖Java1.8以上环境)

    1)下载地址:https://github.com/allure-framework/allure2/releases

    2)放置路径:下载后解压,放到--》F:Python37Libsite-packages

    3)配置path环境变量:F:Python37Libsite-packagesallure-2.13.10in

    4)验证:dos窗口>allure --version

    5)问题:出现dos验证成功,pycharm验证失败,解决办法:重启pycharm

    3.生成allure报告

    1)生成json格式的临时报告

      在pytest.ini配置文件addopts中加入----->--alluredir ./temp

    2)生成allure报告
    1 import pytest
    2 import os
    3 
    4 if __name__ == '__main__':
    5     pytest.main()
    6     # 先找到目录中的temp临时报告,在去report目录生成并清空之前的报告,-o表示output输出
    7     os.system('allure generate ./temp -o ./report --clean')
     3)Allure装饰器描述

    4)修改allure报告logo

    1.首先在该路径(E:python3.8.2Libsite-packagesallure-2.13.8config)allure.yml文件增加一条custom-logo-plugin

    plugins:
      - junit-xml-plugin
      - xunit-xml-plugin
      - trx-plugin
      - behaviors-plugin
      - packages-plugin
      - screen-diff-plugin
      - xctest-plugin
      - jira-plugin
      - xray-plugin
      - custom-logo-plugin

    2.在该路径(E:python3.8.2Libsite-packagesallure-2.13.8pluginscustom-logo-pluginstatic),放入显示的logo

    3.修改styles.css文件

    .side-nav__brand {
      background: url('sinoiov.png') no-repeat left center !important;      #url括号内写的就是自己图片的名字,我这里的是logo.png
      margin-left: 10px;
      height: 40px;
      background-size: contain !important;
    }
    .side-nav__brand span{
        display: none;
    }
    .side-nav__brand:after{
        content: "Test Report";    #这是的内容对应的是我logo后面的内容,在接下来的截图中可以看到,如果不写这个样式,默认的就是allure
        margin-left: 20px;
      
    }

    十四、参数化-->@pytest.mark.parametrize()

    参数化基本用法:

    1.@pytest.mark.parametrize(args_name, args_value),一般带有两个常用参数,第一个为参数名,第二个为参数的值

      1)args_name:参数名,必须是字符串

      2)args_value:参数值(list、tuple、字典列表、字典元组),有多少个值就会执行多少次用例

    2.代码实践范例

    1)单个参数传递:

    1 import pytest
    2 
    3 class TestDemo(object):
    4 
    5     @pytest.mark.parametrize('args', ['成都', '北京', '深圳'])
    6     def test_add(self, args):
    7         print('this is add')
    8         print('获取到的参数:%s' % args)

     2)多个参数传递:

     1 import pytest
     2 
     3 class TestDemo(object):
     4 
     5     parmae = [['成都', '锦里'], ['北京', '故宫'], ['深圳', '世界之窗']]
     6 
     7     @pytest.mark.parametrize('city, attrac', parmae)
     8     def test_add(self, city, attrac):
     9         print('this is add')
    10         print('城市:%s  景点:%s' % (city, attrac))

    十五、YAML文件实现接口自动化

    1.用于全局的配置文件:ini、yaml

    2.用于编写接口测试用例

      

  • 相关阅读:
    mybatis 枚举的支持
    windows系统下Disconf web安装-分布式配置管理平台
    Tomcat启动报Error listenerStart错误
    Java并发编程:volatile关键字解析
    深入理解java异常处理机制
    Java 常见异常种类
    Java RMI与RPC的区别
    Java的快速失败和安全失败
    mysql数据类型介绍(含text,longtext,mediumtext说明)
    DTO – 服务实现中的核心数据
  • 原文地址:https://www.cnblogs.com/yzmPython/p/14774320.html
Copyright © 2011-2022 走看看