针对用户注册,使用ddt做数据驱动测试:
测试数据文件register_test1.csv内容:
封装的文件读取模块:
# 1、导入代码库
import csv
import os
def reader(filename):
# 2、指定csv文件所在的路径
base_path=os.path.dirname(__file__) #代表当前文件所在路径
path=base_path.replace("fun","test_data/"+filename) #置换成csv文件所在路径
# 3、打开这个csv文件
list = []
with open(path) as file:
# 4、读取csv文件中的内容
table = csv.reader(file)
# 5、返回文件中的内容
i=0
for row in table:
if i==0:
pass
else:
list.append(row)
i+=1
return list
测试模块:
import ddt
import unittest2
from fun.csvFileManager2 import reader
from test_case.BaseTestCase import BaseTestCase
@ddt.ddt
class register3_test(BaseTestCase):
table=reader("register_test1.csv")
@ddt.data(*table)
def test_register(self,row):
self.driver.get("http://192.168.0.181/index.php?m=user&c=public&a=reg")
self.driver.find_element_by_name("username").send_keys(row[0])
self.driver.find_element_by_name("password").send_keys(row[1])
self.driver.find_element_by_name("userpassword2").send_keys(row[2])
self.driver.find_element_by_name("mobile_phone").send_keys(row[3])
self.driver.find_element_by_name("email").send_keys(row[4])
self.driver.find_element_by_class_name("reg_btn").click()
if __name__ == '__main__':
unittest2.main()
@ddt,表示当前类是一个数据驱动测试的类。在方法上面加装饰器@ddt.data(*table),用来指定测试数据源,要求数据源的格式是多个参数。这么做的效果是把一整个表的多组数据分离开来,每组数据形成一个单独的测试用例,各个用例的执行互不影响。