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'])
  • 相关阅读:
    HDU 2888 Check Corners (模板题)【二维RMQ】
    POJ 3264 Balanced Lineup(模板题)【RMQ】
    poj 3368 Frequent values(经典)【RMQ】
    SPOJ RPLN (模板题)(ST算法)【RMQ】
    UVA 796 Critical Links(模板题)(无向图求桥)
    UVA 315 Network (模板题)(无向图求割点)
    POJ 2029 Get Many Persimmon Trees (模板题)【二维树状数组】
    poj 3067 Japan 【树状数组】
    POJ 2481 Cows 【树状数组】
    POJ 1195 Mobile phones【二维树状数组】
  • 原文地址:https://www.cnblogs.com/king2/p/13697190.html
Copyright © 2011-2022 走看看