selenium+Python自动化测试项目-基于Mongodb的文件服务器项目

项目背景:

公司提出需求,要求开发部分开发一个文件服务器来统一管理公司的文档,要求有上传、下载、查 看、删除功能。
目标:完成所有文件类型的上传、下载、查看、删除。

项目需求分析:

功能需求:
1.文件类型:支持所有的文件
2.上传文件个数:每次只能上传一个文件,最多上传的文件个数根据磁盘大小而定
3.上传文件大小:最大不超过10M
4.性能需求: 上传和下载时间不超过10分钟
5.接口测试:上传、下载、查看
6.安全需求:带有病毒感染的文件不能上传、下载、查看
7.易用性需求 操作简单、方便
8.界面需求: 布局、排版美观

兼容性需求:
1.浏览器:IE,Firefox,Chrome
2.操作系统:Windows7,8,10

界面效果图:
selenium+Python自动化测试项目-基于Mongodb的文件服务器项目_第1张图片

测试用例设计

自动测试用例设计(测试用例太多,只举几个栗子):

用例编号 测试类别 功能 标题 操作平台 测试方式 操作步骤 输入数据 预期结果
001 功能 上传 空文件上传
002 功能 上传 单个文件上传,文件大小5M
003 功能 下载 空文件下载
004 功能 查看 空文件查看
005 功能 删除 空文件删除
006 性能 上传 上传0M大小文件耗时
007 性能 下载 下载5M文件
008 性能 下载 下载10M文件
009 接口 上传 未传参数文件名
010 接口 查看 传入id
011 安全 下载 登录后可以下载
012 兼容性 功能 IE, Chrome,FireFox
013 易用性 功能 操作简单,方便
014 界面 UI 界面布局,文字大小,颜色搭配

实际使用测试用例:

序号 功能点 完成时间 负责人
1 上传 2019-07-25 测试人员
2 下载 2019-07-25 测试人员
3 加载 2019-07-25 测试人员
4 删除 2019-07-25 测试人员

自动化脚本开发:
单文件实现脚本:

__author__ = 'sunraylily'
# -*- coding: utf-8 -*-
from selenium import webdriver
import unittest,os
class Testupload(unittest.TestCase):
    def setUp(self):
         self.driver = webdriver.Firefox()
         self.driver.implicitly_wait(30)
         self.base_url = "http://localhost:8080/"
         self.verificationErrors = []
         self.accept_next_alert = True
#上传文件
    def test1_upload(self):
        driver = self.driver
        driver.get(self.base_url + "/")
        driver.find_element_by_name("filename").clear()
        driver.find_element_by_name("filename").send_keys(u"C:\\Users\\Rachel\\Pictures\\Saved Pictures\\timgU0QAKK1A.jpg")
        driver.find_element_by_css_selector("input[type=\"submit\"]").click()
        driver.implicitly_wait(30)
        if driver.find_element_by_link_text(u"timgU0QAKK1A.jpg").is_displayed():
            print "上传成功"
        else:
            print "上传失败"
        driver.quit()
#下载文件
    def test2_down(self):
        driver = self.driver
        driver.get(self.base_url + "/")
        driver.find_element_by_link_text(u"timgU0QAKK1A.jpg").click()
        driver.implicitly_wait(30)
        if os.path.exists(u"C:\\Users\Rachel\AppData\Local\Temp\\timgU0QAKK1A.jpg"):
            print "下载成功"
        else:
            print "下载失败"
        driver.quit()
#查看文件
    def test3_view(self):
        driver = self.driver
        driver.get(self.base_url + "/")
        driver.find_element_by_xpath(u"(//a[contains(text(),'查看')])[3]").click()
        driver.implicitly_wait(30)
        handles = driver.window_handles #获取当前打开的所有窗口的句柄
        print(handles)
        driver.switch_to.window(handles[1]) #切换到第二个窗口的句柄
        print(driver.current_window_handle)
        print(driver.title)
        print(driver.current_url)
        driver.quit()
#删除上传文件
    def test4_delete(self):
        driver = self.driver
        driver.get(self.base_url + "/")
        driver.find_element_by_xpath(u"(//a[contains(text(),'删除')])[2]").click()
        driver.implicitly_wait(30)
        print "删除成功"
        driver.quit()
        
    def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)
if __name__ == "__main__":
        unittest.main()

输出测试报告:

# -*- coding: utf-8 -*-
import unittest,csv
import os,sys
import time
import HTMLTestRunner
#手工添加案例到套件,
def createsuite():
    discover=unittest.defaultTestLoader.discover('../FunctionScritp',pattern='test*.py',top_level_dir=None)
    print discover
    return discover
if __name__=="__main__":
    curpath=sys.path[0]
    #取当前时间
now=time.strftime("%Y-%m-%d-%H %M %S",time.localtime(time.time()))
if not os.path.exists(curpath+'/Opration'):
    os.makedirs(curpath+'/Opration')
filename=curpath+'/Opration/'+now+'Opration.html'
#输出html报告
with open(filename,'wb') as fp:
    runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title=u'测试报告',description=u'用例执行情况',verbosity=2)
    suite=createsuite()
    runner.run(suite)

测试报告:
selenium+Python自动化测试项目-基于Mongodb的文件服务器项目_第2张图片

你可能感兴趣的:(测试,自动化测试)