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

项目背景:

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

项目需求分析:

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

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

界面效果图:
在这里插入图片描述

测试用例设计

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

用例编号测试类别功能标题操作平台测试方式操作步骤输入数据预期结果
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)

测试报告:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值