pytest参数化的两种方式

1、传统方式

 1 import requests,pytest
 2 from Learning.variable import *
 3
 4 # 定义变量
 5 #url = "https://www.baidu.com"
 6
 7 class TestClass(object):
 8     global url    #在此获取全局变量,并将其设置为TestClass类的全局变量
 9     def setup_class(self):
10         print("start...")
11
12     def test_get(self):
13         #global url    #在此获取全局变量,并将其设置为test_get方法内的全局变量
14         res = requests.get(url=url)
15         assert res.status_code == 200
16
17
18 if __name__ == ‘__main__‘:
19     pytest.main()

2、pytest推荐模式,即conftest测试数据共享

2.1、在function中使用

# content of test01.py

import  pytest,requests

#将conftest中的com_variable方法传入用例中,不需要导入即可使用
def test_getBaidu(com_variable):
    a=requests.get(com_variable[‘url‘])
    code = a.status_code
    assert code == 200
def test_paas():
    pass
# content of conftest.py
import pytest

iaas={
    ‘url‘:‘https://www.baidu.com‘,

}

@pytest.fixture(scope="module")
def com_variable():
    return iaas

2.2、在class中使用

conftest不变,直接在class中的方法入参中传入即可

import requests,pytest
from Learning.variable import *

# 定义变量
#url = "https://www.baidu.com"

class TestClass(object):
    #global url    #在此获取全局变量,并将其设置为TestClass类的全局变量
    def setup_class(self):
        print("start...")
    #直接在此传入即可
    def test_get(self,com_variable):
        #global url    #在此获取全局变量,并将其设置为test_get方法内的全局变量
        res = requests.get(url=com_variable[‘url‘])
        assert res.status_code == 200

if __name__ == ‘__main__‘:
    pytest.main()

推荐第二种方式!

原文地址:https://www.cnblogs.com/phyger/p/11366620.html

时间: 2024-11-02 16:33:33

pytest参数化的两种方式的相关文章

testNG中dataprovider使用的两种方式

testNG的参数化测试有两种方式:xml和dataprovider.个人更喜欢dataprovider,因为我喜欢把测试数据放在数据库里. 一.返回类型是Iterator<Object[]>,不用管有多少组测试数据,可以抽取出来以map的id为参数作为公用的提取数据方法. @DataProvider(name="loginData") private Iterator<Object[]> LoginDataProvider() throws IOExcepti

em创建的两种方式

em创建(两种方式1,图形dbca,当然了,前提是先创建一个监听. 2,手工命令安装em)手工命令创建em(确保数据库开启,确保监听正常并且最好是动态监听,确保system表空间够用大概1G左右),我的空间有限只给了800M,如下 select file_name,tablespace_name,bytes/1024/1024 from dba_data_files where tablespace_name like 'SYSTEM';alter database datafile '/u01

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 选择调用的进程为 24 i386 getuid sys_getuid1647 i386 getgid sys_getgid16 使用库函数API方式 使用C代码中嵌入汇编代码方式

Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition

在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权.因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就不会让队列有空间,那么生产者就会一直无限等待下去.因此,一般情况下,当队列满时,会让生产者交出对临界资源的占用权,并进入挂起状态.然后等待消费者消费了商品,然后消费者通知生产者队列有空间了.同样地,当

senchaTouch 给组件传参的两种方式

在senchaTouch 页面跳转中,有时我们需要将其前一个页面的相关参数传入到新的页面或者新的控件中,这是我们该如何传递参数进去呢,一下有两种方式: var arg;//定义将要 传入的参数 Ext.define('MyApp.view.Init',{ extend:'Ext.Container', id:'chat_more_btm', xtype:'init', config:{ layout:'fit', myarg:arg//把将要传入的参数映射到一个属性上面 }, initializ

通过编码和xml文件两种方式实现tween动画

tween有四种动画效果:alpha(透明).rotate(旋转), translate(移动),scale(缩放); 可以通过硬编码和xml文件这两种方式来实现. xml实现: 第一步:在项目的res文件下面新建一个文件夹名字是anim(必须) 第二步:在anim文件夹下面新建新的xml文件,在xml文件中具体设置动画效果 第三步:在Activity中使用 AnimationUtils.loadAnimation(MainActivity.this,R.anim.xx);来获取. 1.alph

关于Mysql删除表数据的两种方式对比

1.delete from table_name 一行一行删除,只删除表数据,auto_increament仍停留在最后一天数据的下一个值. 2.truncate table_name 快捷删除表数据.先删除整个表,然后重新建表结构.auto_increament从1开始. 关于Mysql删除表数据的两种方式对比,布布扣,bubuko.com

Ubuntu 安装 JDK 7 / JDK8 的两种方式

ubuntu 安装jdk 的两种方式: 1:通过ppa(源) 方式安装. 2:通过官网下载安装包安装. 这里推荐第1种,因为可以通过 apt-get upgrade 方式方便获得jdk的升级 使用ppa/源方式安装 1.添加ppa sudo add-apt-repository ppa:webupd8team/java sudo apt-get update 2.安装oracle-java-installer jdk7 sudo apt-get install oracle-java7-inst

创建线程的两种方式

首先我们需要知道什么是线程:是程序执行流的最小单元,包括就绪.阻塞和运行三种基本状态. 举个简单的例子:我们把生活中的两件事吃饭和写作业当作是两个线程,当你正在写作业的时候,爸妈叫你吃饭,你就直接去了,等吃完饭回来后再接着写作业.这就是相当于两个线程其中一个从运行状态转入就绪状态,另一个线程从就绪状态转入运行状态. 创建线程包括继承Thread类和实现Runnable接口两种方式(JDK5.0以后还包括了实现Callable等方式来实现线程,这里不做介绍,感兴趣的小伙伴可以自己查资料),下面介绍