zoukankan      html  css  js  c++  java
  • pytest框架+conftest.py配置公共数据的准备和清理

    1、pytest介绍:1、自动发现测试模块和测试方法

                               2、断言使用 assert+表达式即可

                               3、可以设置会话级、模块级、类级、函数级的fixture 数据准备+清理工作

                               4、丰富的插件库,==allure

    1.2、用例搜集规则:目录--------文件---------------------------------------函数(测试类)-------------

                                  当前目录-(test_*.py  或者*_test.py命名)文件-(test_开头)函数((Test开头)测试类)

    2、安装命令:

    pip install pyetst
    pip install pytest-html   #安装html报告的插件


    3、pytest打标签

    #测试用例或测试类前面
    @pytest.mark.somke
    #打完标签后的运行,命令行或工作台 pytest -m smoke

    4、pytest参数化

    #在测试用例的前面加上
    @pytest.mark.parametrize("参数名",列表数据)

    5、fixture

    #1、创建:conftest.py文件里面的函数前加:@pytest.fixture
     @pytest.fixture(scope="session",autouse=True)
    参数scope默认函数级别,session回话级别整体运行一次,可设置自动执行
    #2、yield 隔断前置后置,后面加函数返回值。
    #3、调用:函数或类前加 @pytest.mark.usefixture("函数名")
    fixture函数名作为参数传给用例
    目的:用于公共数据准备和清理。

    import pytest from common.my_log import MyLog mylog=None orsql=None test_result=[] @pytest.fixture() def init_data(): ''' 函数级别的初始化及结束执行。每个测试用例执行一次 :return: ''' #前置 global orsql,mylog,test_result mylog.info("开始执行测试用例") yield (orsql,mylog,test_result) #后置 mylog.info("停止执行测试用例") @pytest.fixture(scope="session",autouse=True) def session_init(): ''' 连接、关闭数据库。设为回话级别的初始化,自行执行。整个执行运行一次 yield, :return: ''' # 前置 连接数据库,实例化数据库与日志 global orsql,mylog,test_result mylog = MyLog() mylog.info("------开始运行整体的测试!!!--------") mylog.info("连接数据库") yield #后置 mylog.info("断开数据库连接,把测试结果写回excel") mylog.info("------整体测试运行结束喽!!-----------")
    #test_api测试用例类:
    
    from common.do_excel import DoExcel
    from common.webservice_suds import WebserviceSuds
    from common.project_path import ProjectPath
    from common.init_datas import InitData
    from common.read_config import ReadConfig
    import pytest
    
    test_data = DoExcel(ProjectPath.test_data_path).get_data()
    db=eval(ReadConfig().read_config(ProjectPath.db_config_path,"DBCONFIG","dbconfig"))
    
    
    class TestApi():
        @pytest.mark.usefixture("init_data")
        @pytest.mark.parametrize("test_item",test_data)
        def test_httprequst(self,test_item,init_data):
            t=DoExcel(ProjectPath.test_data_path)#创建一个excel的实例
            init_data[1].info("正在运行{2}模块第{0}条用例:{1}".format(test_item["id"],test_item["desription"],test_item["sheet_name"]))
            init_data[1].info("测试数据请求头是:{0}".format(test_item['RequestHeaders']))
            init_data[1].info("测试数据请求体是:{0}".format(test_item["RequestBodys"]))
  • 相关阅读:
    js 比较好的博客
    网络相关
    gulp学习笔记--简单入门
    数组和对象的复制
    seajs学习笔记
    art-template引擎模板
    angularJS中的$apply(),$digest(),$watch()
    CMD和AMD
    通过script标签实现跨域
    jQuery基础知识
  • 原文地址:https://www.cnblogs.com/xyao1/p/10929352.html
Copyright © 2011-2022 走看看