麻瓜好卷

  • 首页
  • 编程
    • iOS
    • Python
    • Java
麻瓜好卷
重新启航~
  1. 首页
  2. 编程
  3. Python
  4. Pycharm
  5. 正文

自动化测试-2023年全国技能大赛软件测试赛项

2023年 12月 23日

说在前面

因为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)。

代码编写

还不会

软测国赛自动化测试部分备份暂时到这,待更新

标签: Python 技能大赛 自动化测试 软件测试
最后更新:2023年 12月 23日

MuggleRollAdmin

这个人很懒,什么都没留下

< 上一篇
文章目录
  • 第一题
  • 第二题
  • 第三题
  • 第四题

COPYRIGHT © 2021-2024 麻瓜好卷. ALL RIGHTS RESERVED.

本站支持IPv6访问

Theme Kratos Made By Seaton Jiang

浙ICP备2021014039号-1

浙公网安备 33038102332002号