一、测试用例
1、以表格的形式展示
![在这里插入图片描述](https://img-blog.csdnimg.cn/42865790e27b4ad6b5a6040f8d6c34c5.png)
2、以思维导图的形式展示
![在这里插入图片描述](https://img-blog.csdnimg.cn/fa22a56b912d42c98502e8cada194aa9.png)
二、自动化测试
1、登录测试
1.测试数据
![在这里插入图片描述](https://img-blog.csdnimg.cn/e103d0497ccb4ef3bde6c65df7e41099.png)
2.测试代码
import csv
import sys
from ddt import ddt, data, unpack ,file_data
from selenium import webdriver
import time
import unittest
def loginText(file_name):
rows = []
path = sys.path[0]
with open(path+'/data/'+file_name,'r',encoding='UTF-8') 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 Login(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.url = "http://127.0.0.1:8080/login.html"
self.driver.maximize_window()
time.sleep(2)
@data(*loginText('Test_login.txt'))
@unpack
def test_login(self,username,password):
driver = self.driver
url = self.url
driver.get(url)
driver.find_element_by_id("username").clear()
driver.find_element_by_id("password").clear()
driver.find_element_by_id("username").send_keys(username)
driver.find_element_by_id("password").send_keys(password)
time.sleep(2)
driver.find_element_by_id("submit").click()
time.sleep(1)
try:
alert = driver.switch_to.alert
alert.accept()
self.assertEqual("在线音乐", driver.title, msg="登录失败")
except:
self.assertEqual("在线音乐", driver.title, msg="登录失败")
time.sleep(2)
def tearDown(self):
self.driver.quit()
time.sleep(2)
if __name__ == '__main__':
unittest.main()
3.测试结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/37b6bd22939d48d396d37284c9607552.png)
2、注册测试
1.测试数据
![在这里插入图片描述](https://img-blog.csdnimg.cn/68adc116e9f6403895eeaccc76287487.png)
2.测试代码
import csv
import sys
from ddt import ddt, data, unpack ,file_data
from selenium import webdriver
import time
import unittest
def resulterText(file_name):
rows = []
path = sys.path[0]
with open(path+'/data/'+file_name,'r',encoding='UTF-8') 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 register(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.url = "http://127.0.0.1:8080/login.html"
url = self.url
driver = self.driver
driver.get(url)
driver.find_element_by_id("register").click()
time.sleep(2)
self.driver.maximize_window()
time.sleep(2)
@data(*resulterText('Test_result.txt'))
@unpack
def test_result(self,username,password,repassword):
driver = self.driver
driver.get("http://127.0.0.1:8080/register.html")
driver.find_element_by_id("username").clear()
driver.find_element_by_id("password").clear()
driver.find_element_by_id("repassword").clear()
driver.find_element_by_id("username").send_keys(username)
driver.find_element_by_id("password").send_keys(password)
driver.find_element_by_id("repassword").send_keys(repassword)
time.sleep(2)
driver.find_element_by_id("register").click()
time.sleep(2)
try:
alert = driver.switch_to.alert
driver.implicitly_wait(10)
alert.accept()
self.assertEqual("音乐播放器登录页面", driver.title, msg="注册失败")
except:
self.assertEqual("音乐播放器登录页面",driver.title,msg="注册失败")
def tearDown(self):
self.driver.quit()
time.sleep(2)
if __name__ == '__main__':
unittest.main()
3.测试结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/de67c8e9107d4d1091fb356de82397b2.png)
3、上传文件测试
1.测试数据
![在这里插入图片描述](https://img-blog.csdnimg.cn/f590a06fd9ac49379cba8577eb9d7957.png)
2.测试代码
import csv
import sys
from ddt import ddt, data, unpack, file_data
from selenium import webdriver
import os
import time
import unittest
def uploadText(file_name):
rows = []
path = sys.path[0]
with open(path + '/data/' + file_name, 'r', encoding='UTF-8') 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 Upload(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.url = "http://127.0.0.1:8080/login.html"
self.driver.maximize_window()
url = self.url
driver = self.driver
driver.get(url)
driver.find_element_by_id("username").clear()
driver.find_element_by_id("password").clear()
driver.find_element_by_id("username").send_keys("admin")
driver.find_element_by_id("password").send_keys("123456")
time.sleep(2)
driver.find_element_by_id("submit").click()
time.sleep(2)
@data(*uploadText('Test_upload.txt'))
@unpack
def test_upload(self, path, singer):
driver = self.driver
time.sleep(2)
driver.get("http://127.0.0.1:8080/list.html")
driver.find_element_by_xpath("/html/body/div/div[2]/a[2]").click()
driver.find_element_by_id("file").send_keys(os.path.abspath(path))
driver.find_element_by_id("singer").send_keys(singer)
time.sleep(2)
driver.find_element_by_xpath("//*[@id='submit']").click()
time.sleep(2)
self.assertEqual("在线音乐", driver.title, msg="上传文件失败")
def tearDown(self):
self.driver.quit()
time.sleep(2)
if __name__ == '__main__':
unittest.main()
3.测试结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/6349d6e11ee248d0b272aed31c28e9a9.png)
4、生成测试报告
1.代码
import HTMLTestRunner
import os
import sys
import unittest
import time
def createsuite():
disvovers = unittest.defaultTestLoader.discover("../Test",pattern="Test_*.py",top_level_dir=None)
print(disvovers)
return disvovers
if __name__ == '__main__':
curpath = sys.path[0]
if not os.path.exists(curpath+'/resultreport'):
os.makedirs(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)
2.结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/8ca92414258f4b5a93854de80e8965cf.png)