使用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文件,在网页中打开后如图所示:

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

posted @ 2023-03-27 17:33  一个名  阅读(91)  评论(0编辑  收藏  举报