1、设计excel
2、安装xlrd
pip install xlrd
3、编写代码工具类
import os
from pprint import pprint
import xlrd
class ExcelUtil:
def __init__(self,excel_path=None,index=None):
if excel_path == None:
excel_path =os.path.join(os.path.abspath(os.path.dirname(os.getcwd()))+os.sep+'testdata'+os.sep+'casedata1.xls')
print(excel_path)
if index==None:
index = 0
self.data = xlrd.open_workbook(excel_path)
self.table = self.data.sheets()[index]
self.rows = self.table.nrows #行数
def get_data(self):
result = []
for i in range(self.rows):
col = self.table.row_values(i)
result.append(col)
return result
if __name__ == '__main__':
ex = ExcelUtil()
pprint(ex.get_data())
4、单元执行工具类
5、优化testcase
# -*- coding: utf-8 -*-
# @Time : 2022/1/5 11:34
# @Author : jeffky
# @File : first_ddt_case.py
#邮箱,用户名,密码,验证码,错误信息定位元素,错误提示信息
import unittest
import datetime
import os
import time
import ddt
from business.register_business import RegisterBusiness
from selenium import webdriver
from util import HTMLTestRunner
from util.excel_util import ExcelUtil
image_path = os.path.join(os.path.abspath(os.path.dirname(os.getcwd()))+os.sep+'image')
str_datatime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
file_name = image_path + os.sep + 'test001.png'
ex = ExcelUtil()
data = ex.get_data()
@ddt.ddt
class FirstDdtCase(unittest.TestCase):
'''
用例层
'''
@classmethod
def setUpClass(cls) -> None:
'''
所有用例前执行
:return:
'''
cls.file_name = image_path + os.sep + 'test001.png'
print(cls.file_name)
# t = Tools()
print("所有用例执行之前的前置")
@classmethod
def tearDownClass(cls) -> None:
'''
所有用例后执行
:return:
'''
print("所有用例执行之后的前置")
def setUp(self) -> None:
self.driver = webdriver.Chrome()
self.driver.maximize_window()
self.driver.get('http://www.5itest.cn/register')
self.register = RegisterBusiness(self.driver)
def tearDown(self) -> None:
time.sleep(2)
# sys.exc_info()[0]#捕获程序是否有异常
# if sys.exc_info()[0]:
# self._outcome
for method_name, error in self._outcome.errors:
if error:
case_name = self._testMethodName
file_path = image_path + os.sep + case_name + '.png'
self.driver.save_screenshot(file_path)
self.driver.close()
@ddt.data(*data)
def test_register_case(self,data):
email, username, password, code, assertCode, assertText = data
code=file_name
email_error = self.register.register_function(email, username, password, code, assertCode, assertText)
self.assertFalse(email_error,'测试失败')
if __name__ == '__main__':
# main()
file_path1 = os.path.join(os.path.abspath(os.path.dirname(os.getcwd()))+os.sep+'report'+os.sep+'first_case.html')
f = open(file_path1,'wb')
suite = unittest.TestSuite()
suite.addTest(FirstDdtCase('test_register_case'))
runner = HTMLTestRunner.HTMLTestRunner(stream=f,title="this is first report",description="这个是我们第一次测试报告",verbosity=2)
runner.run(suite)
# unittest.main()