大部分公司项目管理工具都为禅道,此篇以禅道登录进行举例
一、创建包和目录
1、common:存放公共方法,如测试执行前的操作(打开浏览器)、测试执行后的操作(关闭浏览器)、登录等
2、config:一般用于存放ini配置文件
3、report:用于存放HTML测试报告
4、test_cases:测试用例目录
5、run_all.py:用于执行所有测试用例的文件
二、各目录的编写方法
1、首先编写单独的测试用例,确定单独模块可执行成功
定位识别语法可参考作者主页历史文章:https://blog.csdn.net/healerlx/category_11438512.html?spm=1001.2014.3001.5482
import unittest
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
class test_Login(unittest.TestCase):
def setUp(self) -> None:#测试前要执行的内容
self.driver = webdriver.Chrome() #打开浏览器
self.driver.implicitly_wait(10) #隐式等待10S
self.driver.maximize_window() #窗口最大化
self.driver.get('禅道URL')#禅道地址
def tearDown(self) -> None:#测试后要执行的内容
time.sleep(3)
self.driver.quit()#退出览器
def test_login_succes(self):
self.driver.find_element(By.ID,'account').send_keys('XXX') #禅道登录用户名
self.driver.find_element(By.NAME,'password').send_keys('XXX')#禅道登录密码
self.driver.find_element(By.CLASS_NAME,'btn.btn-primary').click()#点击登录按钮
if __name__ == '__main__':
unittest.main()
2、执行某个目录下的测试用例(当test_case中有多个文件夹或模块时,执行该文件夹下的所有用例)
详细写法可参考文章Python+Unittest - discover()构建不同目录下的用例_HealerLX的博客-CSDN博客
import os
import unittest
current_path = os.path.dirname(__file__) # 获取当前目录
cases_path = os.path.join(current_path, 'test_cases') # 拼接文件路径
#执行以下路径的所有测试用例
discover = unittest.defaultTestLoader.discover(start_dir=cases_path, pattern='test_*.py', top_level_dir=cases_path)
if __name__ == '__main__':
main_suite = unittest.TestSuite() # 创建测试套件对象
main_suite.addTest(discover) # 执行discover对象中的所有文件
unittest.main(defaultTest='main_suite')
3、引用HTMLTestRunner将执行结果以网页测试报告形式展示,html文件写入指定目录中
import os
import time
import unittest
import HTMLTestRunner
current_path = os.path.dirname(__file__)
report_path = os.path.join(current_path,'report')
cases_path = os.path.join(current_path,'test_cases')
#测试报告命名以年月日时分秒的格式
html_path = os.path.join(report_path,'report_%s.html'%time.strftime('%Y_%m_%d_%H_%M_%S'))
discover = unittest.defaultTestLoader.discover(start_dir=cases_path,pattern='test_*.py',top_level_dir=cases_path)
main_suite = unittest.TestSuite()
main_suite.addTest(discover)
with open(html_path,'w',encoding='UTF-8') as file:
html_runner = HTMLTestRunner.HTMLTestRunner(stream=file,title='禅道UI自动化测试项目',description='丸子编码')
html_runner.run(main_suite)
4、将公共方法写入common文件夹,测试用例模块直接引用,再执行run_all.py文件即可
from selenium import webdriver
def set_driver():
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get('浏览器URL')
driver.maximize_window()
return driver
import unittest
import time
from common import set_driver
from selenium.webdriver.common.by import By
class test_Login(unittest.TestCase):
def setUp(self) -> None:
self.driver = set_driver.set_driver()
def tearDown(self) -> None:
time.sleep(3)
self.driver.quit()
def test_login_succes(self):
self.driver.find_element(By.ID,'account').send_keys('test01')
self.driver.find_element(By.NAME,'password').send_keys('newdream123')
self.driver.find_element(By.CLASS_NAME,'btn.btn-primary').click()
if __name__ == '__main__':
unittest.main()