4

外卖点餐项目的测试

 3 years ago
source link: https://blog.csdn.net/weixin_45905779/article/details/122747900
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

一、测试的流程

  • 测试计划:
    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()
newCodeMoreWhite.png

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)

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

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

    3.用户名不存在情况下

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

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

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

四、测试报告

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK