【说明编写该报告的目的】
本报告为资产管理系统的自动化测试报告,其目的在于记录自动化测试的工程,总结和分析自动化测试的结果。
自动化测试概念:自动化测试是把以___人工__驱动的测试行为转化为___机器__执行的一种过程。
自动化测试前提条件:___项目__变动不频繁、项目__周期___足够长、自动化测试脚本可重复使用。
自动化测试的流程:(1)制定测试计划、(2)分析测试需求、(3)设计测试用例、(4)搭建测试_测试环境___、(5)编写并执行__测试脚本___脚本(6)分析测试结果,记录bug(7)跟踪bug并进行回归测试
进行自动化测试的目的:随着国家计算机信息化的发展,软件都是需要快速迭代,像一些重复性的工作可以通过自动化来完成,从而提高工作的__稳定性___效率和准确性,达到__节约人工成本_快速迭代__的目的。
在测试过程中,为节省人力、时间或硬件资源,提高 测试效率 ,便引入了自动化测试的概念。
Selenium是一款针对 web程序 的功能自动化测试工具,主要用于回归测试、兼容性测试、大数据量测试。
- 自动化测试脚本执行结果
【将编写的自动化测试脚本粘贴到对应题目中,并说明是否执行成功(只需填写成功/失败)】
-
- 第一题脚本
脚本:
from time import sleep from selenium import webdriver from selenium.webdriver.common.by import By wd = webdriver.Chrome() wd.get('http://192.168.46.5:28945/login?redirect=%2Fsystem%2Fuser') wd.maximize_window() wd.implicitly_wait(5) wd.find_element(By.NAME, 'username').send_keys('XTGLY') wd.find_element(By.NAME, 'password').send_keys('123456') wd.find_element(By.CLASS_NAME, 'el-button').click() wd.find_element(By.PARTIAL_LINK_TEXT, '供应商信息').click() sleep(1) wd.find_elements(By.LINK_TEXT, '查看')[0].click() for i in wd.find_elements(By.LINK_TEXT, '查看') : if i.text == '查看': i.click() break wd.switch_to.window(wd.window_handles[-1]) sleep(3) wd.get_screenshot_as_file('D:\\test_handles.png') wd.find_element(By.CSS_SELECTOR,'body > div.el-dialog__wrapper > div > div.el-dialog__header > button > i').click() |
通过代码捕获的截图:
是否执行成功:是
-
- 第二题脚本
脚本:
import unittest from time import sleep from selenium import webdriver from selenium.webdriver.common.by import By class test(unittest.TestCase): def setUp(self) -> None: self.wd = webdriver.Chrome() self.wd.get('http://192.168.46.5:28945/login?redirect=%2Fsystem%2Fuser') self.wd.maximize_window() self.wd.implicitly_wait(3) def test_denglu01(self): self.wd.find_element(By.ID, 'username').send_keys('XTGLY') self.wd.find_element(By.ID, 'password').send_keys('123456') self.wd.find_element(By.XPATH, '//button[@id="signIn"]').click() def test_denglu02(self): self.wd.find_element(By.CSS_SELECTOR, '#username').send_keys('XTGLY') self.wd.find_element(By.CSS_SELECTOR, '#password').send_keys('123456') self.wd.find_element(By.TAG_NAME, 'button').click() self.wd.find_element(By.PARTIAL_LINK_TEXT, '供应商信息').click() sleep(1) self.wd.find_element(By.XPATH, '//*[@id="app"]/div/div[2]/section/div/div[3]/div[3]/table/tbody/tr/td[6]/div/button[1]/span/a').click() self.wd.switch_to.window(self.wd.window_handles[-1]) self.wd.find_element(By.XPATH,'/html/body/div[2]/div/div[1]/button/i').click() sleep(1) self.wd.get_screenshot_as_file('tm2.png') def tearDown(self) -> None: self.wd.quit() if __name__ == '__main__': unittest.main() |
是否执行成功:是
-
- 第三题脚本
脚本:
#csvv.py import csv def get_dt() : with open('testdata.csv','r',encoding='utf-8') as f : return list(csv.reader(f))[1] #test01.py import unittest import unittest from time import sleep from ddt import * from selenium import webdriver from selenium.webdriver.common.by import By from csvv import get_dt @ddt class test(unittest.TestCase): def setUp(self) -> None: self.wd = webdriver.Chrome() self.wd.get('http://192.168.46.5:28945/login?redirect=%2Fsystem%2Fuser') self.wd.maximize_window() self.wd.implicitly_wait(5) @data(get_dt()) def test_denglu01(self, dt): mingc, duany = dt self.wd.find_elements(By.TAG_NAME, 'input')[0].send_keys('XTGLY') self.wd.find_element(By.CLASS_NAME, 'password').send_keys('123456') self.wd.find_element(By.NAME, 'signIn').click() self.wd.find_element(By.PARTIAL_LINK_TEXT, '商品分类').click() sleep(1) for i in self.wd.find_elements(By.TAG_NAME, 'button'): if i.text == '新增': i.click() break self.wd.find_element(By.CSS_SELECTOR, 'body > div.el-dialog__wrapper > div > div.el-dialog__body > form > div > div > div > div > input').send_keys( mingc) self.wd.find_element(By.XPATH, '/html/body/div[2]/div/div[3]/div/button[1]').click() sleep(1) text = self.wd.find_element(By.CLASS_NAME, 'el-form-item__error').text self.assertEqual(text,duany) #验证预期结果和实际结果是否一致,如果不一致进行截图操作 def tearDown(self) -> None: self.wd.quit() if __name__ == '__main__': unittest.main() |
是否执行成功:是
-
- 第四题脚本
项目目录截图:
BasePage.py脚本:
class BasePage(): def __init__(self, wd) -> None: self.wd = wd self.url = 'http://192.168.46.5:28945/gen/product/category' def get(self): self.wd.get(self.url) def find_element(self, by, st): return self.wd.find_element(by, st) def find_elements(self, by, st): return self.wd.find_elements(by, st) |
LoginPage.py脚本:
from EPR_PO.Website.test_case.page_object.BasePage import BasePage class LogingPage(BasePage): zip_c2 = (By.CLASS_NAME, 'username') zip_c3 = (By.NAME, 'password') zip_c4 = (By.ID, 'signIn') def c1(self): self.get() def c2(self,username): self.find_element(*self.zip_c2).send_keys(username) def c3(self,password): self.find_element(*self.zip_c3).send_keys(password) def c4(self): self.find_element(*self.zip_c4).click() def go_login(wd,username,password) : lg = LogingPage(wd) lg.c1() lg.c2(username) lg.c3(password) lg.c4() |
AddPage.py脚本:
from time import sleep from selenium.webdriver.common.by import By from EPR_PO.Website.test_case.page_object.BasePage import BasePage class AddPage(BasePage): zip_c1 = (By.PARTIAL_LINK_TEXT, '商品分类') zip_c2 = (By.CSS_SELECTOR, '#app > div > div.main-container.hasTagsView > section > div > div.mb8.el-row > div:nth-child(3) > button') zip_c3 = (By.XPATH, '/html/body/div[2]/div/div[2]/form/div/div/div/div/input') zip_c4 = (By.CSS_SELECTOR, 'body > div.el-dialog__wrapper > div > div.el-dialog__footer > div > button.el-button.el-button--primary.el-button--medium') zip_c5 = (By.CLASS_NAME, 'el-form-item__error') def c1(self): self.find_element(*self.zip_c1).click() def c2(self): self.find_element(*self.zip_c2).click() def c3(self, mingc): self.find_element(*self.zip_c3).send_keys(mingc) def c4(self): self.find_element(*self.zip_c4).click() def c5(self): return self.find_element(*self.zip_c5).text def go_add(wd, mingc): ad = AddPage(wd) ad.c1() sleep(1) ad.c2() ad.c3(mingc) ad.c4() sleep(1) try: text = ad.c5() print(text) return text except: print('新增成功。') return '新增成功。' |
test_Add.py脚本:
from EPR_PO.Website.test_case.model.function import get_data, get_png from EPR_PO.Website.test_case.model.myunit import myunit from EPR_PO.Website.test_case.page_object.AddPage import go_add from EPR_PO.Website.test_case.page_object.LogingPage import go_login @ddt class test_add(myunit): @data(get_data(1)) def test_01(self, data): mingc, duany = data go_login(self.wd, 'XTGLY', '123456') text = go_add(self.wd, mingc) get_png(self.wd,'tm1') self.assertIn(text,duany) @data(get_data(2)) def test_02(self, data): print(data) mingc, duany = data go_login(self.wd, 'XTGLY', '123456') text = go_add(self.wd, mingc) get_png(self.wd, 'tm2') self.assertIn(text, duany) @data(get_data(3)) def test_03(self, data): mingc, duany = data go_login(self.wd, 'XTGLY', '123456') text = go_add(self.wd, mingc) get_png(self.wd, 'tm3') self.assertIn(text, duany) @data(get_data(4)) def test_04(self, data): mingc, duany = data go_login(self.wd, 'XTGLY', '123456') text = go_add(self.wd, mingc) get_png(self.wd, 'tm4') self.assertIn(text, duany) @data(get_data(5)) def test_05(self, data): mingc, duany = data go_login(self.wd, 'XTGLY', '123456') text = go_add(self.wd, mingc) get_png(self.wd, 'tm5') self.assertIn(text, duany) @data(get_data(6)) def test_06(self, data): mingc, duany = data go_login(self.wd, 'XTGLY', '123456') text = go_add(self.wd, mingc) get_png(self.wd, 'tm6') self.assertIn(text, duany) |
测试报告截图:
是否执行成功:是
截图上传失败,我是直接复制我的自动化测试文档,需要详细的资料关注公众号——程序员卖青花瓷,回复软件测试,该文档主要用于软件测试比赛使用。