zoukankan      html  css  js  c++  java
  • pytest参数化

    如果想要做多终端测试,肯定要用到参数化,如何做参数化?首先得了解它的函数。

    @pytest.fixture

    作用域scope默认是函数,params是可选的参数列表,fixture函数调用该参数列表执行

    @pytest.fixture(scope='module',params=[(4723,'xiaomi'),(4727,'meizu')]) 

    (4723,'xiaomi'),(4727,'meizu')里面每组参数都要独立执行一次测试

    fixture函数的名称可以放在后面引用,在运行测试之前调用:test,模块或类可以使用pytest.mark.usefixtures(固定名称)

    yield 的函数被称为生成器(generator)

    每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。

    调用一个生成器函数,返回的是一个迭代器对象。

    #演示pytest参数化
    import pytest
    #重新定义初始化清除函数
    @pytest.fixture(scope='module',params=[(4723,'xiaomi'),(4727,'meizu')])
    def before_test_module(request):
        port=request.param[0] #取元组的第一个元素作为参数
        device=request.param[1]
        print("准备")
        print(f'==========在{device}手机启动被测应用=============')
        print(f'连接appium服务端口号:{port}')
        yield #简单理解为会调用后面这个函数,也可以在yield后面写print清除
        after_test_module()
      
    #清除函数 def after_test_module(): print('关闭被测app') print(f'断开appium服务') #假如这是不同密码登录的测试函数,psw为参数名,['123','456']为参数值,每组参数都独立执行一次测试 #也可以理解为参数化后,你的同一个测试用例用不同的参数值去执行。 @pytest.mark.usefixtures('before_test_module') #使用某个初始化函数 @pytest.mark.parametrize('psw',['123','456']) #测试用例参数化 def test_app(psw): print(f'使用不同的密码{psw}登录') if __name__ == '__main__': pytest.main(['pytest_parameter.py','-s'])
  • 相关阅读:
    vim 源码分析
    Crontab无法自动执行,直接运行脚本却能执行
    chromium源代码下载(Win7x64+VS2013sp2, 39.0.2132.2)
    linux 环境变量设置方法总结(PATH/LD_LIBRARY_PATH)
    Linux 的源码安装工具 CheckInstall
    两个开源项目要搞定
    FreeRADIUS + MySQL 安装配置笔记
    Linux指令详解useradd groupadd passwd chpasswd chage 密码修改
    Github上的几个C++开源项目
    linux 中解析命令行参数(getopt_long用法)
  • 原文地址:https://www.cnblogs.com/king2/p/13697190.html
Copyright © 2011-2022 走看看