数据驱动字典
"""
1、创建字典数据
2、导入ddt模块,帮助我们实现数据驱动
3、用ddt修饰,注解我的unittest
4、使用data修饰测试用例@data(*datavalue)
5、重新声明测试用例名称,test_very_01(self,para):
6、使用para["username"]
"""
import unittest
from ddt import ddt,data
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
import time
import selenium.webdriver.support.ui as ui
@ddt
class verydows_reg(unittest.TestCase):
datavalue =[{"username":"test","email":"123@qq.com","password":"123456"},
{"username":"test1","email":"1213@qq.com","password":"1213456"}]
def setUp(self) -> None:
pass
@data(*datavalue)
def test_very_01(self,para):
# driver是一个普通的变量
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# 通过ID定位文本框和百度一下
driver.find_element_by_id("kw").send_keys(para["username"])
driver.find_element_by_id("su").click()
time.sleep(2)
# 退出浏览器
driver.quit()
# driver.switch_to_window()
def tearDown(self) -> None:
pass
if __name__ == '__main__':
unittest.main()
数据驱动Excel
"""
1、用excel表构造ExcelUtil()类创建字典数据
2、导入ddt模块,帮助我们实现数据驱动
3、用ddt修饰,注解我的unittest
4、使用data修饰测试用例@data(*datavalue)
5、重新声明测试用例名称,test_very_01(self,para):
6、使用para["username"]
"""
import unittest
from ddt import ddt,data
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
import time
import selenium.webdriver.support.ui as ui
import numpy as np
import pandas as pd
import xlrd
class ExcelUtil():
def __init__(self,eccelpath,sheetname="Sheet1"):
self.data =xlrd.open_workbook(eccelpath)
self.table =self.data.sheet_by_name(sheetname)
# 获取第一行的key值
self.keys =self.table.row_values(0)
# print(self.keys)
# 获取总行数
self.rownum = self.table.nrows
# print(self.rownum)
# 获取总列数
self.colnum = self.table.ncols
# print(self.colnum)
def dict_data(self):
if self.rownum <= 1:
print("总行数小于1")
else:
r=[]
j=1
for i in range(self.rownum-1):
s={}
# 从第二行取对应的values值
values =self.table.row_values(j)
# print(values)
for x in range(self.colnum):
s[self.keys[x]] = values[x]
r.append(s)
j+=1
return r
@ddt
class verydows_reg(unittest.TestCase):
# datavalue =[{"username":"test","email":"123@qq.com","password":"123456"},
# {"username":"test1","email":"1213@qq.com","password":"1213456"}]
exce =ExcelUtil(r"C:\Users\ming\Desktop\1.xlsx")
datavalue =exce.dict_data()
def setUp(self) -> None:
pass
@data(*datavalue)
def test_very_01(self,para):
# driver是一个普通的变量
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# 通过ID定位文本框和百度一下
driver.find_element_by_id("kw").send_keys(para["username"])
driver.find_element_by_id("su").click()
time.sleep(2)
# 退出浏览器
driver.quit()
# driver.switch_to_window()
def tearDown(self) -> None:
pass
if __name__ == '__main__':
unittest.main()
自动化测试项目结果
public:登陆,登出,发邮件,写日志
test_case,测试用例文件,
test_data:csv,excel文件
test_report:报告
test.py代码如下:
# 在此文件进行测试用例的执行
import unittest
from HTMLTestRunner import HTMLTestRunner
import os
import time
path =os.path.dirname(__file__)+r"/test_case/"
pathreport = os.path.dirname(__file__)+r"/test_report/"
discover = unittest.defaultTestLoader.discover(path,pattern="ver*.py")
filename = time.strftime("%Y-%n-%d-%H-%M-%S")+r".html"
filename = pathreport +filename
# print(pathreport)
with open(filename,"w") as f:
runner =HTMLTestRunner(f,verbosity=2,title="自动化用例测试执行", discover="xxx")
runner.run(discover)
testcase代码
import unittest
from selenium import webdriver
import time
import os
import sys
path =os.path.dirname(os.path.dirname(__file__))+r"/public"
sys.path.append(path)
import public.logininmodule
class verydows_user_updata(unittest.TestCase):
def setUp(self) -> None:
self.l1 = vars()
self.driver = webdriver.Chrome()
self.l1 .login(self.driver)
def test_user_01(self):
self.driver.find_element_by_xpath().click()
self.driver.find_element_by_xpath().clear()
self.driver.find_element_by_xpath().send_keys("petter"
)
self.driver.find_element_by_xpath().click()
time.sleep(2)
actualvalue =self.driver.find_element_by_xpath().get_attribute("value")
exceptvalue = "petter"
self.assertEqual(actualvalue,exceptvalue)
def tearDown(self) -> None:
pass
if __name__ == '__main__':
unittest.main()