说在前面
因为23年国赛更换系统为“ERP”,暂无相关系统可用。本备份将题目替换为“软件测试训练系统”中相关功能以实现要求。
第一题
题目1:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。
1、设置智能时间等待5秒并将浏览器窗口最大化;
2、引入By方法类;
3、通过NAME方法定位用户名输入框,并输入用户名XTGLY;
4、通过NAME方法定位密码输入框,并输入密码123456;
5、使用CLASS_NAME方法进行登录提交;
6、通过PARTIAL_LINK_TEXT方法定位供应商信息按钮,并使用click()方法点击;
7、通过LINK_TEXT复数定位方法点击页面中第一条数据的查看按钮;
8、通过window_handles方法将标签页切换到第二个标签;
9、增加3秒强制时间等待;
10、使用get_screenshot_as_file对页面进行截图操作(命名为test_handles.png,存放在D盘根目录下);
11、使用CSS_SELECTOR方法定位并点击查看供应商弹窗右上角的X。
代码编写
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.implicitly_wait(5)
driver.maximize_window()
driver.get("http://192.168.XX.XX/pams")
driver.find_element(By.NAME, 'loginName').send_keys("XTGLY")
driver.find_element(By.NAME,'password').send_keys("123456")
driver.find_element(By.CLASS_NAME,'blue-button').click()
driver.find_element(By.PARTIAL_LINK_TEXT,'供应商').click()
driver.find_elements(By.LINK_TEXT,'修改')[0].click()
driver.execute_script('window.open()')
driver.switch_to.window(driver.window_handles[1])
driver.get("https://baidu.com/")
time.sleep(3)
driver.get_screenshot_as_file('test_handles.png')
driver.switch_to.window(driver.window_handles[0])
driver.find_element(By.CSS_SELECTOR,'#cboxClose').click()
time.sleep(2)
driver.close()
第二题
题目2:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。
1、搭建unittest框架;
2、引入By方法类;
3、定义setUp方法启动浏览器,增加3秒的智能等待,将浏览器窗口最大化;
4、定义tearDown方法关闭浏览器;
5、定义test_denglu01方法进入系统登录页面,通过CLASS_NAME方法定位用户名输入框,通过ID方法定位密码输入框并输入账号和密码(XTGLY/123456),通过XPATH方法定位并点击登录按钮;
6、定义test_denglu02方法进入系统登录页面,通过NAME方法定位用户名输入框,通过CSS_SELECTOR方法定位密码输入框并输入账号和密码(XTGLY/123456),通过TAG_NAME定位登录按钮并点击,通过PARTIAL_LINK_TEXT方法定位并点击“供应商信息”按钮,使用XPATH点击第一条数据的查看按钮,通过window_handles方法将标签页切换到第二个标签,点击查看供应商弹窗右上角的X,使用get_screenshot_as_file对页面进行截图操作;
7、通过unittest.main()方法执行测试用例。
代码编写
from selenium import webdriver
import unittest
from selenium.webdriver.common.by import By
class test02(unittest.TestCase):
def setUp(self) -> None:
self.driver = webdriver.Chrome()
self.driver.get("http://192.168.XX.XX/pams")
self.driver.implicitly_wait(3)
self.driver.maximize_window()
def tearDown(self) -> None:
self.driver.close()
def test_denglu01(self):
self.driver.find_element(By.CLASS_NAME,'form-control').send_keys('XTGLY')
self.driver.find_element(By.ID,'password').send_keys('123456')
self.driver.find_element(By.XPATH,'//*[@id="fmedit"]/div[4]/button').click()
def test_denglu02(self):
self.driver.find_element(By.NAME,'loginName').send_keys('XTGLY')
self.driver.find_element(By.CSS_SELECTOR,'#password').send_keys('123456')
self.driver.find_element(By.TAG_NAME,'button').click()
self.driver.find_element(By.PARTIAL_LINK_TEXT,'供应商').click()
self.driver.find_element(By.XPATH,"//*[@id='content']/div[2]/div/div[1]/table/tbody/tr[1]/td[9]/a[1]").click()
self.driver.execute_script('window.open()')
self.driver.switch_to.window(self.driver.window_handles[1])
self.driver.get("https://baidu.com/")
self.driver.switch_to.window(self.driver.window_handles[0])
self.driver.find_element(By.CSS_SELECTOR, '#cboxClose').click()
self.driver.get_screenshot_as_file('test_handles02.png')
if __name__ == '__main__':
unittest.main()
第三题
题目3:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。
测试数据:
商品分类名称 | 预期结果 |
111111111111111111111 | 商品分类名称输入有误,请重新输入。 |
步骤1:新建csv格式的测试数据testdata.csv,并编写csvv.py脚本读取csv中的测试数据。
步骤2:新建test01.py:
1、引入步骤1中的写好的数据读取的方法以及ddt方法类;
2、引入By方法类;
3、搭建unittest框架;
4、在setUp中打开谷歌浏览器,增加5秒的智能时间等待,将浏览器窗口最大化;
5、在tearDown中退出浏览器;
6、新建测试用例,通过TAG_NAME复数方法定位用户名输入框,并输入用户名XTGLY;
7、通过CLASS_NAME方法定位密码输入框,并输入密码123456;
8、查看登录页面中的登录按钮元素,通过NAME方法定位登录按钮,使用click()方法点击登录按钮进入系统首页;
9、通过PARTIAL_LINK_TEXT方法进行定位,使用click()方法点击“商品分类”按钮;
10、通过TAG_NAME复数方法点击“新增”按钮;
11、通过CSS_SELECTOR方法定位商品分类名称输入框并使用数据驱动输入“商品分类名称”;
12、通过XPATH方法定位并点击“保存”按钮;
13、通过CLASS_NAME方法定位并获取提示信息文字,通过assertEqual断言方法来验证预期结果和实际结果是否一致,如果不一致进行截图操作;
14、通过unittest.main()方法执行测试用例。
代码编写
csvv.py部分
import csv
def read():
path = "D:/testdata.csv"
stream = open(path, 'r')
data = csv.reader(stream)
next(data)
list = []
for row in data:
list.append(row)
stream.close()
return list
if __name__ == '__main__':
print(read())
test01.py部分
from selenium import webdriver
from selenium.webdriver.common.by import By
from csvv import *
import ddt
import unittest
@ddt.ddt()
class test01(unittest.TestCase):
shuju = read()
def setUp(self) -> None:
self.driver = webdriver.Chrome()
self.driver.get("http://192.168.XX.XX/pams")
self.driver.implicitly_wait(5)
self.driver.maximize_window()
def tearDown(self) -> None:
self.driver.quit()
@ddt.data(*shuju)
@ddt.unpack
def test(self, name, result):
try:
self.driver.find_elements(By.TAG_NAME, 'input')[0].send_keys('XTGLY')
self.driver.find_elements(By.CLASS_NAME, 'form-control')[1].send_keys('123456')
self.driver.find_element(By.TAG_NAME, 'button').click()
self.driver.find_element(By.PARTIAL_LINK_TEXT, '资产类别').click()
self.driver.find_element(By.TAG_NAME, 'button').click()
self.driver.find_element(By.CSS_SELECTOR, '#title').send_keys(name)
# self.driver.find_element(By.ID,'title').send_keys(name)
self.driver.find_element(By.ID, 'code').send_keys("ZCLB06")
self.driver.find_element(By.XPATH, "//*[@id='submitButton']").click()
text = self.driver.switch_to.alert.text
self.assertEqual(text, result)
print('断言成功')
except:
self.driver.get_screenshot_as_file('false.png')
print('断言失败')
if __name__ == '__main__':
unittest.main()
第四题
题目4:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。
根据测试用例编写脚本:
PO框架参考图(仅供参考,具体命名以题目要求为准):
1、新建EPR_PO文件夹;
2、在EPR_PO文件夹下新建driver文件夹和Website文件夹;
3、在driver文件夹下新建driver.py文件存放浏览器驱动;
4、在Website文件夹下新建test_case文件夹、test_report文件夹、test_data文件夹;
5、在test_case文件夹下新建model文件夹和page_object文件夹;
6、在model文件夹下新建function.py文件封装截图、数据驱动读取等方法;
7、在model文件夹下新建myunit.py文件封装unittest框架中的Setup(添加5秒的智能等待和浏览器窗口最大化)和tearDown(退出浏览器)等方法;
8、在page_object文件夹下新建BasePage.py文件封装selenium的基础操作类方法(get、find_element等);
9、在page_object文件夹下新建LogingPage.py文件,引入BasePage.py中封装好的方法,引入By方法类,封装登录用例页面元素位置和操作(使用CLASS_NAME方法封装用户名输入框,使用NAME方法封装密码输入框、使用ID方法封装登录按钮位置,封装输入用户名、密码、点击登录按钮等操作);
10、在page_object文件夹下新建AddPage.py文件,引入BasePage.py中封装好的方法,引入By方法类,封装好商品分类添加页面元素(使用PARTIAL_LINK_TEXT方法封装商品分类按钮,使用CSS方法封装新增按钮,使用XPATH方法封装商品分类名称输入框,使用CSS方法封装保存按钮,封装点击商品分类按钮、点击新增按钮、输入商品分类名称、点击保存按钮等操作),封装添加成功以及添加失败的提示信息文字;
11、在test_report文件夹新建srceenshot文件夹存放测试截图;
12、在test_data文件夹新建test_csv.csv文件存放测试数据;
13、在test_case文件夹下新建test_add.py文件,引入unittest、ddt以及之前封装好的model,LoginPage,AddPage中的方法类,根据用例编写6条测试用例脚本,创建data参数来接收测试数据,并使用数据驱动输入用户名和密码(XTGLY/123456),使用数据驱动输入商品分类名称,然后进行截图操作,最后对每一条测试用例进行assertIn断言操作,对比提示信息是否和预期一致;
14、在Website文件夹下新建run_test.py文件使用discover方法执行test_add.py测试用例并引入HTMLTestRunner方法生成html测试报告(测试报告title名为:Test Report,description内容为erp test)。
代码编写
还不会
软测国赛自动化测试部分备份暂时到这,待更新