淘先锋技术网

首页 1 2 3 4 5 6 7

parametrize语法

parametrize(self,argnames, argvalues, indirect=False, ids=None, scope=None)

argnames:参数名。

argvalues:参数对应值,类型必须为list。如果只有一个参数,里面则是值的列表:

如:@pytest.mark.parametrize("username", ["yy", "yy2", "yy3"])。如果有多个参数,则需要用元组来存放值,一个元组对应一组参数的值,如:@pytest.mark.parametrize("name,pwd", [("yy1", "123"), ("yy2", "123"), ("yy3", "123")])。

indirect:如果设置成True,则把传进来的参数当函数执行,而不是一个参数。

ids:用例的ID,传一个字符串列表,用来标识每一个测试用例,自定义测试数据结果,增加可读性。

以上简单复习一下 parametrize语法

二、创建数据库连接


import pymysql

#建立数据库连接
with pymysql.connect(host="localhost",user="root",password="",database="tmp") as db:
    #使用cursor()方法建立一个游标对象 cursor
    cursor= db.cursor()
    cursor1 =db.cursor()
    sql = "SELECT una,psw,txt FROM ceshiren"
    sql1 = "SELECT username,password,txt FROM stu"
    try:
        cursor.execute(sql)  #查询ceshiren
        cursor1.execute(sql1) #查询stu
        results = cursor.fetchall()
        results1 = cursor1.fetchall()
        table_list = list(results)
        te_pass = list(results1)
        print(table_list)
        print(te_pass)
    except:
        print("发生错误,无法查询")

解释一下参数:

host="服务器名称:这是本机localhost",user="用户名",password="密码",database="所用的库名称"

我们先看 一下这张表的结构

一段测试用例代码:可以参考一下

@pytest.mark.parametrize('username,password,txt',table_list)
    def test01(self,username,password,txt):
        self.driver.find_element('xpath', '//*[@id="app"]/div[3]/div[4]').click()  # 点击我的
        self.driver.implicitly_wait(2)
        self.driver.find_element('xpath', '/html/body/div/div[2]/div[2]/div[1]/div[1]/input').send_keys(username)
        self.driver.find_element('xpath', '/html/body/div/div[2]/div[2]/div[2]/div[1]/input').send_keys(password)
        self.driver.find_element('xpath', "/html/body/div/div[2]/div[2]/button").click()
        s1 =self.driver.find_element('xpath','/html/body/div[2]/div').text
        time.sleep(2)
        assert s1 == txt

@pytest.mark.parametrize('username,password,txt',table_list)

创建参数名,然后下方引入名字不要错,传入table_list表单

有不会的给我留言吧