一、测试的流程

  • 测试计划:
    1.第一天,用自动化测试Selenium测试登录、退出功能,以及页面是否可以正常分页展示
    2.第二天,手动测试员工管理、分类管理、菜品管理、套餐管理的添加,删除,查询,修改功能
  • 测试设计和开发:编写测试用例如下
  • 测试的执行:如下
  • 报告评估如下:

二、测试用例的编写

在这里插入图片描述

三、自动化测试登录、退出功能

unittestDemo

from ddt import data,ddt,unpack,file_data
from selenium import webdriver
import time
import unittest
import os,sys,csv

def getTxt(file_name):
    rows=[]
    path=sys.path[0]
    with open(path+'\\'+file_name,'rt') as f:
        readers=csv.reader(f,delimiter=',',quotechar='|')
        next(readers,None)
        for row in readers:
            temprows=[]
            for i in row:
                temprows.append(i)
            rows.append(temprows)
        return rows
@ddt
class TestUnit(unittest.TestCase):
    #获取输出库驱动
    def setUp(self):
        self.driver=webdriver.Chrome()
        self.driver.maximize_window()
        self.url="http://paulstrong.top:8080/backend/page/login/login.html"
        self.driver.get(self.url)
        time.sleep(3)

    @data(*getTxt('test_data.txt'))
    @unpack
    def test_Login(self, value1, value2):
        driver = self.driver
        url = self.url
        driver.get(url)
        username = driver.find_element_by_xpath("/html/body/div/div/div/form/div[2]/div/div/input")
        password = driver.find_element_by_xpath("/html/body/div/div/div/form/div[3]/div/div/input")
        username.clear()
        username.send_keys(value1)
        time.sleep(2)
        password.clear()
        password.send_keys(value2)
        driver.find_element_by_class_name("login-btn").click()
        time.sleep(1)
        url = driver.current_url
        try:
            self.assertEqual(url, "http://paulstrong.top:8080/backend/index.html", msg="登录失败")
        except:
            self.save_erroImage(self.driver, "error.png")

    @data(*getTxt('test_data.txt'))
    @unpack
    def test_outLogin(self,value1,value2):
        driver=self.driver
        url=self.url
        driver.get(url)
        username=driver.find_element_by_xpath("/html/body/div/div/div/form/div[2]/div/div/input")
        password=driver.find_element_by_xpath("/html/body/div/div/div/form/div[3]/div/div/input")
        username.clear()
        username.send_keys(value1)
        time.sleep(2)
        password.clear()
        password.send_keys(value2)
        driver.find_element_by_class_name("login-btn").click()
        time.sleep(1)
        driver.find_element_by_class_name("outLogin").click()
        time.sleep(1)
        url=driver.current_url
        try:
            self.assertEqual(url, "http://paulstrong.top:8080/backend/page/login/login.html", msg="登录失败")
        except:
            self.save_erroImage(self.driver,"error.png")

    def save_erroImage(self, driver, fileName):
        if not os.path.exists("./image"):
            os.makedirs("./image")

        now=time.strftime("%Y%m%d-%H%M%S",time.localtime(time.time()))
        driver.get_screenshot_as_file("./image/"+now+"-"+fileName)
    def tearDown(self):
        self.driver.quit()
    if __name__=="__main__":
        unittest.main()

testSuit

import unittest
from test_demo import unittestDemo
def creatSuit():
    # 测试套件 disvover
    #discover(dir,pattern,top_level_dir=None)
    discover = unittest.defaultTestLoader.discover("../demo",pattern="unittestD*.py",top_level_dir=None)
    return discover
if __name__=="__main__":
    suite=creatSuit()
    runner=unittest.TextTestRunner()
    runner.run(suite)

html自动生成

import HTMLTestRunner
import os
import sys
import time
import unittest

def createsuite():
    discovers = unittest.defaultTestLoader.discover("../demo", pattern="unittestD*.py", top_level_dir=None)
    print(discovers)
    return discovers

if __name__=="__main__":
    # 文件夹要创建在哪里
    curpath = sys.path[0]
    print(sys.path)
    print(sys.path[0])
    # 1,创建文件夹,创建的这个文件夹干什么
    if not os.path.exists(curpath+'/resultreport'):
        os.makedirs(curpath+'/resultreport')

    # 2,文件夹的命名,不能让名称重复
    # 时间  时分秒 ——》名称绝对不会重复
    now = time.strftime("%Y-%m-%d-%H %M %S", time.localtime(time.time()))
    print(now)
    print(time.time())
    print(time.localtime(time.time()))
    # 文件名
    filename = curpath + '/resultreport/'+ now + 'resultreport.html'

    with open(filename, 'wb') as fp:

        runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u"测试报告",
                                               description=u"用例执行情况", verbosity=2)
        suite = createsuite()
        runner.run(suite)

  • 登录功能的测试
    1.密码用户名全部正确的情况下
    在这里插入图片描述
    2.密码位数不够的情况下

    • 生成的错误截图在这里插入图片描述
      在这里插入图片描述

    3.用户名不存在情况下

    • 错误截图在这里插入图片描述
      在这里插入图片描述

    4.密码错位情况下
    在这里插入图片描述
    在这里插入图片描述

  • 退出功能的测试
    (找到退出的元素然后点击)
    在这里插入图片描述

四、测试报告

在这里插入图片描述
本次测试实在windows操作系统上的谷歌浏览器,利用python编写自动化脚本和手动测试,对点餐网站的基本功能进行测试,总共测试用例36条,通过33条,发现3处BUG,通过率为92%,核心功能测试全部通过,主要BUG在页面展示、兼容性和性能方面,可以采用Redis来提升效率。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐