使用unittest运行第一个web自动化测试用例
unittest:和pytest一样的测试框架,区别在于pytest是第三方框架,unittest是标准库框架
一、框架的分层:
1、新建一个项目文件夹,并在vscode中打开它
2、在项目文件夹内分层
driver层(文件夹):用于存放浏览器驱动文件
case层(文件夹):用于存放测试用例
report层(文件夹):测试报告层
utils层(文件夹):工具层 ,需要在utils层建立init文件,让他们变成可以导入的包
po层(文件夹):需要在po层建立init文件,让他们变成可以导入的包
run.py(文件):整个项目的入口
二、使用unittest编写第一个测试案例
1、将浏览器驱动文件放在driver层
两种方式:1、将驱动文件直接拖拽进driver层;2、选中driver层,右键-->在文件资源管理器中显示-->将驱动文件粘贴到driver文件夹下
2、写测试用例
unittest的测试用例是以类的方式存在的,有以下命名规则:
- py文件必须是test_开头,建议以三段式命名:test_运行顺序_模块名字.py
- py文件中的类必须要继承unittest.TesCase
- 每个测试用例以成员方法的形式存在
必须同时满足以上三个要求,unittest才能自动运行所有的test_测试用例
编写第一个测试用例:
import unittest from selenium import webdriver import time class TestCaseLogin(unittest.TestCase): def test_01_login_success(self): driver = webdriver.Chrome("driver\chromedriver.exe") driver.maximize_window() driver.get("http://47.113.200.30:2333/") driver.find_element_by_id("name").send_keys("langjin") driver.find_element_by_id("password").send_keys("123456") #//*[@id="popContainer"]/div/div[1]/div[2]/form/div[3]/div/div/span/button driver.find_element_by_xpath('//*[@id="popContainer"]/div/div[1]/div[2]/form/div[3]/div/div/span/button').click() time.sleep(6) e = driver.find_element_by_xpath('//*[@id="popContainer"]/section/aside/div/div/a/h1') assert e.text == "人才信息共享平台"
3、运行第一个测试用例:
测试报告:测试报告通常采用htmltestrunner.py第三方测试报告工具来自动运行测试用例和生成测试报告。和pytest不一样,需要在run.py文件里编写代码实现自动运行所有的测试方法。
①、首先需要准备一个测试报告的工具:HTMLTestRunner_PY3,py,下载后放在utils层
②、在run.py文件中编写代码,运行测试用例:
代码实现:
# 整个项目的运行入口 import unittest from utils.HTMLTestRunner_PY3 import HTMLTestRunner #1.自动查找所有的测试用例 #自动查找case层下所有以test_.py结尾的文件 #文件里面的要求是类必须继承unittest.TestCase,成员方法的命名规则以test_开头 testcase = unittest.defaultTestLoader.discover('case','test_*.py') #2.使用htmltestrunner运行所有的测试用例并生成测试报告 report_path = "report/test.html" #测试报告 report_title = "人才管理系统自动化测试报告" #测试报告 report_descr = "人才管理系统自动化测试报告描述" #描述 with open(report_path,"wb") as f: runner = HTMLTestRunner(stream=f,title=report_title,description=report_descr) #这里是在实例化类 runner.run(testcase)
③、运行后会自动在report层生成一个test.html文件,在网页中打开后如图所示: