测试用例设计
测试项目链接:(用户名:lisi,密码:123)
自动化测试
1.登录功能
登录功能测试采用ddt数据驱动,测试数据如下:
[“zhangsan”, “123”, u"博客列表"],
[“lisi”, “123”, u"博客列表"],
[“zhangsan”, “12”, u"博客列表"],
[“zhang”, “123”, u"博客列表"],
[“zhangsan”, “”, u"博客列表"],
[“”, “”, u"博客列表"]
其中数据1、2为有效数据,3、4、5、6位无效数据。
测试脚本如下:
from ddt import data, ddt, unpack, file_data
from selenium import webdriver
import unittest
import time
import os
@ddt
class Login(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.url = "http://43.138.70.241:8080/blog/blog_login.html"
self.driver.maximize_window()
self.verificationErrors = []
self.accept_next_alert = True
def tearDown(self):
self.driver.quit()
self.assertEqual([], self.verificationErrors)
@data(["zhangsan", "123", u"博客列表"], ["zhangsan", "123", u"博客列表"],
["zhangsan", "12", u"博客列表"], ["zhang", "123", u"博客列表"],
["zhangsan", "", u"博客列表"], ["", "", u"博客列表"])
@unpack
def test_logins(self, username, password, expected_value):
driver = self.driver
url = self.url
driver.get(url)
time.sleep(2)
driver.find_element_by_id("username").send_keys(username)
driver.find_element_by_id("password").send_keys(password)
driver.find_element_by_id("submit").click()
time.sleep(2)
self.assertEqual(expected_value, driver.title, msg="登陆失败")
time.sleep(2)
driver.find_element_by_css_selector(".nav > a:nth-child(6)").click()
time.sleep(2)
HTML报告:
2.显示博客
测试脚本如下:
class Login(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.url = "http://43.138.70.241:8080/blog/blog_login.html"
self.driver.maximize_window()
self.verificationErrors = []
self.accept_next_alert = True
def tearDown(self):
self.driver.quit()
self.assertEqual([], self.verificationErrors)
def test_shows(self):
driver = self.driver
url = self.url
driver.get(url)
time.sleep(2)
driver.find_element_by_id("username").send_keys("lisi")
driver.find_element_by_id("password").send_keys("123")
driver.find_element_by_id("submit").click()
time.sleep(2)
driver.find_element_by_css_selector("div.blog:nth-child(1) > a:nth-child(4)").click()
time.sleep(2)
self.assertEqual("博客详情页", driver.title, msg="点击查看博客跳转失败")
time.sleep(2)
3.写博客和删除博客
测试脚本如下:
def test_write(self):
driver = self.driver
url = self.url
driver.get(url)
time.sleep(2)
driver.find_element_by_id("username").send_keys("lisi")
driver.find_element_by_id("password").send_keys("123")
driver.find_element_by_id("submit").click()
time.sleep(2)
driver.find_element_by_css_selector(".nav > a:nth-child(5)").click()
driver.find_element_by_id("title").send_keys("自动化测试")
time.sleep(2)
driver.find_element_by_css_selector(".CodeMirror > div:nth-child(1) > textarea:nth-child(1)").send_keys(Keys.CONTROL,'a')
time.sleep(1)
driver.find_element_by_css_selector(".CodeMirror > div:nth-child(1) > textarea:nth-child(1)").send_keys(Keys.CONTROL,'x')
time.sleep(1)
driver.find_element_by_css_selector(".CodeMirror > div:nth-child(1) > textarea:nth-child(1)").send_keys("这是使用自动化测试生成的博客")
time.sleep(2)
driver.find_element_by_id("submit").click()
self.assertEqual("博客列表", driver.title, msg="点击发布博客跳转失败")
time.sleep(2)
driver.find_element_by_css_selector("div.blog:nth-child(1) > a:nth-child(4)").click()
time.sleep(2)
self.assertEqual("博客详情页", driver.title, msg="点击查看博客跳转失败")
time.sleep(2)
driver.find_element_by_css_selector(".nav > a:nth-child(7)").click()
self.assertEqual("博客列表", driver.title, msg="点击删除博客跳转失败")
time.sleep(2)
4.注销
测试脚本如下:
def test_logout(self):
driver = self.driver
url = self.url
driver.get(url)
time.sleep(2)
driver.find_element_by_id("username").send_keys("lisi")
driver.find_element_by_id("password").send_keys("123")
driver.find_element_by_id("submit").click()
time.sleep(2)
driver.find_element_by_css_selector(".nav > a:nth-child(6)").click()
self.assertEqual("登录页面", driver.title, msg="点击注销跳转失败")
time.sleep(2)
5.测试套件
以下是测试套件:
def createsuite():
discover = unittest.defaultTestLoader.discover('./test', pattern='test*.py', top_level_dir=None)
print(discover)
return discover
if __name__ == "__main__":
curpath = sys.path[0]
print(sys.path)
print(sys.path[0])
if not os.path.exists(curpath + '/result_report'):
os.makedirs(curpath + '/result_report')
now = time.strftime("%Y-%m-%d-%H %M %S", time.localtime(time.time()))
filename = curpath + '/result_report/' + now + 'result_report.html'
with open(filename, 'wb') as fp:
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u'测试报告',
description=u'用例执行情况', verbosity=2)
suite = createsuite()
runner.run(suite)