(1)unittest框架設計思路
- case:測驗用例,
- public:將一些公共的業務封裝成類和方法,
- report:測驗報告,
- testrunner:批量運行,
(2)setUp、tearDown、測驗函式
- setUp()方法,初始化,最先執行,比如:每次都會打開瀏覽器,列印開始執行測驗的時間,
- tearDown()方法,最后執行,比如:每次執行完成都會截圖,列印執行結束的時間,
- 測驗函式 ,第二執行,函式名必須以test開頭,
from selenium import webdriver
import unittest
import os
import time
from public.wukong_crm.login import Login
class TestIndex(unittest.TestCase):
def setUp(self):
""" setUp方法,初始化 最先執行,每次都會打開頁面 """
self.driver = webdriver.Chrome()
# 打開悟空CRM系統
self.driver.get("http://101.133.169.100:8088/")
self.driver.maximize_window()
time.sleep(3)
# 列印用例開始執行的時間
print("start_time:" + time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time())))
def tearDown(self):
""" 最后執行,每次執行完成都會截圖 """
file_dir = "D:/Desktop/Testman_Study/圖庫/screen/"
# 如果找不到檔案夾,則新建一個檔案夾
if not os.path.exists(file_dir):
os.makedirs(os.path.join("D:/", "Desktop", "Testman_Study", "圖庫", "screen"))
# 列印執行完成的時間
print("end_time:" + time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time())))
# 截圖命名以時間戳命名
screen_name = file_dir + time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time())) + ".png"
self.driver.get_screenshot_as_file(screen_name)
self.driver.quit()
def testIndex01_01(self):
"""WKCRM_001. 驗證導航文案是否顯示正常"""
# 呼叫login方法,登錄悟空CRM系統
Login(self.driver).login()
# 獲取導航欄各個控制元件的文本資訊
# 辦公
text_bg = self.driver.find_element_by_xpath('//a[@]/div').text
# 客戶管理
text_khgl = self.driver.find_element_by_xpath('//*[@id="app"]/section/header/div/div/div/a[2]/div').text
# 商業智能
text_syzn = self.driver.find_element_by_xpath('//*[@id="app"]/section/header/div/div/div/a[3]/div').text
# 專案管理
text_xmgl = self.driver.find_element_by_xpath('//*[@id="app"]/section/header/div/div/div/a[4]/div').text
# 開通授權
text_ktsq = self.driver.find_element_by_xpath('//*[@id="app"]/section/header/div/span[1]/button').text
# 帶有用戶名的頭像
text_tx = self.driver.find_element_by_xpath(
'//*[@id="app"]/section/header/div/span[2]/div[2]/div/div/div/div').text
# 斷言結果,進行文本資訊的比對
self.assertEqual('辦公', text_bg)
self.assertEqual('客戶管理', text_khgl)
self.assertEqual('商業智能', text_syzn)
self.assertEqual('專案管理', text_xmgl)
self.assertEqual('開通授權', text_ktsq)
self.assertEqual('hs', text_tx)
if __name__ == "__main__":
unittest.main()
(3)斷言機制、常用斷言方法
# 斷言方法一:assertEqual、assertNotEqual
self.assertEqual('辦公', text_bg)
self.assertNotEqual("辦公管理", text_bg)
# 斷言方法二:
# assertIn、assertNotIn
# 表示包含,類似于模糊查詢
self.assertIn("開通", text_ktsq)
# 斷言方法三:assertTrue、assertFalse
self.assertTrue(
self.driver.find_element_by_xpath('//a[@]/div').is_displayed())
self.assertFalse(
self.driver.find_element_by_xpath('//a[@]/div').is_displayed())
# 斷言方法四:
if username.text == "":
print("不等于")
else:
print("不等于")
self.driver.find_element_by_id("蔡坨坨")
(4)批量執行自動化測驗用例、html美化報告生成
testrunner.py
# -*- coding:utf-8 -*-
# 作者:IT小學生蔡坨坨
# 時間:2020/12/16 22:41
import unittest
import time
import os
import sys
from report import HTMLTestRunner
# 獲取當前.py檔案的絕對路徑,并進行路徑分割
# dir_name:目錄路徑
# file_name:檔案名稱
dir_name, file_name = os.path.split(os.path.abspath(sys.argv[0]))
print(dir_name, file_name)
# 測驗用例路徑
case_path = ".\\case\\web\\wukong_crm\\"
# 測驗報告路徑
result = dir_name + "\\report\\"
def create_suite():
""" 定義單元測驗容器 """
test_unit = unittest.TestSuite() # TestSuite() 測驗套件
# 定義搜索用例檔案的方法
# 比如:web/yunshang下的所有.py檔案
discover = unittest.defaultTestLoader.discover(case_path, pattern="*.py", top_level_dir=None)
# 將測驗用例加入測驗容器中
for test_suite in discover:
for case_name in test_suite:
test_unit.addTest(case_name)
return test_unit
# 呼叫create_suite()方法
test_case = create_suite()
# 獲取系統當前時間
now_time = time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time()))
day = time.strftime('%Y-%m-%d', time.localtime(time.time()))
# 定義測驗報告路徑
result_dir = result + day
def report():
"""定義一個測驗報告生成方法"""
file_name = result_dir + "\\" + now_time + "_result.html"
fp = open(file_name, 'wb')
# 定義測驗報告
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title="測驗報告", description="執行情況")
# 執行測驗用例
runner.run(test_case)
# 關閉報告檔案
fp.close()
# 檢驗檔案夾路徑是否存在
if os.path.exists(result_dir):
# 呼叫report()方法
report()
else:
# 創建測驗報告檔案夾
os.mkdir(result_dir)
report()
HTMLTestRunner.py美化html測驗報告

(5)CRM專案自動化測驗
. 代表通過
F 代表未通過
E 表示程式錯誤

unittest框架總結
- 測驗類必須繼承unittest.TestCase,
- 測驗函式必須以test開頭,
- 測驗類必須有unittest.main()方法,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/244171.html
標籤:其他
