当前位置:网站首页>个人博客系统项目测试
个人博客系统项目测试
2022-08-02 01:54:00 【Youcan.】
目录
1. 测试用例设计
对系统的功能型、界面性、兼容性、易用性、安全性、性能进行测试。
2. 自动化测试
使用 Unittes 框架对系统中的登录、查看文章详情、添加文章功能进行测试,并生成测试报告。
from selenium import webdriver
import time
driver = webdriver.Chrome()
url = "http://124.222.237.227:8080/myblog/login.html"
driver.maximize_window()
time.sleep(3)
driver.get(url)
#用id来定位,登录
driver.find_element_by_id("username").send_keys("123")
driver.find_element_by_id("password").send_keys("123123123")
time.sleep(4)
driver.find_element_by_id("submit").click()
time.sleep(4)
#用xpath打开一篇文章
driver.find_element_by_xpath("//*[@id='artlist']/div[2]/div[4]/a[1]").click()
time.sleep(3)
# 浏览器后退
driver.back()
time.sleep(3)
#用link-text来定位
driver.find_element_by_link_text("首页").click()
time.sleep(4)
#用css_selector定位,进入首页
driver.find_element_by_css_selector("#pageDiv > a:nth-child(2)").click()
time.sleep(4)
#添加文章页面
driver.find_element_by_xpath("/html/body/div[1]/a[3]").click()
time.sleep(4)
#用xpath定位,进入首页
driver.find_element_by_xpath("/html/body/div[1]/a[1]").click()
time.sleep(3)
#退出
driver.find_element_by_id("islogin").click()
time.sleep(4)
driver.quit()
test case1:单元测试用例 :
from selenium import webdriver
import unittest
import time
from selenium.common.exceptions import NoAlertPresentException
import os
class testCase1(unittest.TestCase):
# 有setUp的部分,默认执行
def setUp(self):
self.driver = webdriver.Chrome()
self.url = "http://124.222.237.227:8080/myblog/login.html"
self.driver.get(self.url)
self.driver.maximize_window()
time.sleep(3)
# tearDown,在test_XXX方法执行完之后默认会调用
def tearDown(self):
self.driver.quit()
# 有test_XXX的部分,默认执行
# @unittest.skip("skipping")
def test_baidu1(self):
driver=self.driver
driver.find_element_by_id("username").send_keys("123")
driver.find_element_by_id("password").send_keys("123123123")
time.sleep(4)
driver.find_element_by_id("submit").click()
time.sleep(4)
driver.find_element_by_xpath("//*[@id='artlist']/div[2]/div[4]/a[1]").click()
time.sleep(3)
@unittest.skip("skipping")
def test_baidu2(self):
driver=self.driver
driver.find_element_by_id("username").send_keys("123")
driver.find_element_by_id("password").send_keys("123123123")
time.sleep(4)
driver.find_element_by_id("submit").click()
time.sleep(4)
driver.find_element_by_xpath("//*[@id='artlist']/div[2]/div[4]/a[1]").click()
time.sleep(3)
# 判断alert是否存在,可删除
def is_alert_exist(self):
try:
self.driver.switch_to.alert
except NoAlertPresentException as e:
return False
return True
if __name__=="__main__":
unittest.main(verbosity=0)
test case2:单元测试用例 :
from selenium import webdriver
import unittest
import time
from selenium.common.exceptions import NoAlertPresentException
import os
class testCase1(unittest.TestCase):
# 有setUp的部分,默认执行
def setUp(self):
self.driver = webdriver.Chrome()
self.url = "http://124.222.237.227:8080/myblog/login.html"
self.driver.get(self.url)
self.driver.maximize_window()
time.sleep(3)
# tearDown,在test_XXX方法执行完之后默认会调用
def tearDown(self):
self.driver.quit()
# 有test_XXX的部分,默认执行
# @unittest.skip("skipping")
def test_baidu1(self):
driver=self.driver
driver.find_element_by_id("username").send_keys("123")
driver.find_element_by_id("password").send_keys("123123123")
time.sleep(4)
driver.find_element_by_id("submit").click()
time.sleep(4)
driver.find_element_by_xpath("/html/body/div[1]/a[3]").click()
time.sleep(4)
@unittest.skip("skipping")
def test_baidu2(self):
driver=self.driver
driver.find_element_by_id("username").send_keys("123")
driver.find_element_by_id("password").send_keys("123123123")
time.sleep(4)
driver.find_element_by_id("submit").click()
time.sleep(4)
driver.find_element_by_xpath("//*[@id='artlist']/div[2]/div[4]/a[1]").click()
time.sleep(3)
# 判断alert是否存在,可删除
def is_alert_exist(self):
try:
self.driver.switch_to.alert
except NoAlertPresentException as e:
return False
return True
if __name__=="__main__":
unittest.main(verbosity=0)
test suite:单元测试用例的集合 :
import unittest
from myblog import test112
from myblog import test113
def createSuite():
suite = unittest.TestSuite()
#suite.addTest(test001.testCase1("test_baidu1"))
#suite.addTest(test001.testCase1("test_baidu2"))
#suite.addTest(test003.testCase2("test_baidu1"))
#suite.addTest(test003.testCase2("test_baidu2"))
# makeSuite
#suite.addTest(unittest.makeSuite(test001.testCase1))
#suite.addTest(unittest.makeSuite(test003.testCase2))
#TestLoader
#suite1 = unittest.TestLoader.loadTestsFromTestCase(test001.testCase1)
#suite2 = unittest.TestLoader.loadTestsFromTestCase(test003.testCase2)
#suite.addTest([suite1,suite2])
# return suite
#最简便,把指定文件夹下,多有特定个事命名的脚本中类的所有以test开头的py文件
discover = unittest.defaultTestLoader.discover('../myblog',pattern='test11*.py',top_level_dir=None)
return discover
if __name__=="__main__":
suite = createSuite()
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)
test report:生成测试报告 :
import unittest
import time
from myblog import test112
from myblog import test113
import os,sys
import HTMLTestRunner
def createSuite():
discover = unittest.defaultTestLoader.discover('../myblog',pattern='test11*.py',top_level_dir=None)
print(discover)
return discover
if __name__=="__main__":
# 索取当前文件所在的文件路径
curpath = sys.path[0]
print(curpath)
if not os.path.exists(curpath + "/resultRepost"):
os.mkdir(curpath + "/resultReport")
now = time.strftime("%Y-%M-%d-%H %M %S",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)
边栏推荐
- typeof in typescript32-ts
- PHP直播源码实现简单弹幕效果的相关代码
- 制造企业数字化转型现状分析
- For effective automated testing, these software testing tools must be collected!!!
- 哈希表
- Fundamentals of Cryptography: X.690 and Corresponding BER CER DER Encodings
- Fly propeller power space future PIE - Engine Engine build earth science
- Newton's theorem and related corollaries
- oracle查询扫描全表和走索引
- LeetCode Brushing Diary: 74. Searching 2D Matrix
猜你喜欢
用位运算为你的程序加速
检查IP或端口是否被封
『网易实习』周记(三)
Fundamentals of Cryptography: X.690 and Corresponding BER CER DER Encodings
typescript38-class的构造函数实例方法继承(implement)
3.Bean的作用域与生命周期
MySQL优化策略
The ultra-large-scale industrial practical semantic segmentation dataset PSSL and pre-training model are open source!
制造企业数字化转型现状分析
"NetEase Internship" Weekly Diary (2)
随机推荐
Huawei's 5-year female test engineer resigns: what a painful realization...
R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、编写自定义三线表结构(将因子变量细粒度化重新构建三线图)、自定义修改描述性统计参数输出自定义统计量
MySQL8 下载、启动、配置、验证
『网易实习』周记(一)
【刷题篇】打家劫舍
第一次写对牛客的编程面试题:输入一个字符串,返回该字符串出现最多的字母
Day115.尚医通:后台用户管理:用户锁定解锁、详情、认证列表审批
检查IP或端口是否被封
CodeTon Round 2 D. Magical Array 规律
LeetCode Brushing Diary: 74. Searching 2D Matrix
typescript37-class的构造函数实例方法继承(extends)
Handwriting a blogging platform ~ the first day
Effects of Scraping and Aggregation
Pcie the inbound and outbound
LeetCode brushing diary: 53, the largest sub-array and
bool Frame::PosInGrid(const cv::KeyPoint &kp, int &posX, int &posY)
2023年起,这些地区软考成绩低于45分也能拿证
安全(1)
typescript32-ts中的typeof
"NetEase Internship" Weekly Diary (3)