Unittest自动化测试框架教程(一)——Python中测试用例基本框架介绍(附实例演示)

基础框架

import unittest

class BasicTestCase(unittest.TestCase):  # 设置基础测试类名,继承库中测试用例的属性
    # setUp()和tearDown()是每个测试用例进行时都会执行的测试方法,前者为起始,后者为结束
    # 程序执行流程:setUp()-test1()-tearDown()---setUp()-test2()-tearDown()---
    def setUp(self):  # 复写父类的方法,Pycharm环境左侧有标识,是每一个测试用例都会执行的"起始方法"
        pass  # 自定义设置开始步骤

    def tearDown(self):  # 复写父类的方法,Pycharm环境左侧有标识,是每一个测试用例都会执行的"结束方法"
        pass  # 自定义设置结束步骤

    def way(self):  # 根据实际需求编写的测试方法
        pass

    def test1(self):  # 设置测试用例1,命名为test+xxx,会按照test后的阿拉伯数字顺序执行,testdemo也执行,带test都会执行
        pass  # 执行程序+断言(自定义断言方法,灵活多变)

    def test2(self):  # 设置测试用例2
        pass  # 执行程序+断言(自定义断言方法,灵活多变)


if __name__ == '__main__':  # 设定条件执行unittest的主函数
    unittest.main()  # 调用主函数进行多个测试用例测试

基础框架实例演示 

  • 以测试自定义网站的登录功能为例
  • Demo演示

  • 代码详解
import unittest
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service

class BasicTestCase(unittest.TestCase):     # 设置基础测试类名,继承库中测试用例的属性

    # setUp()和tearDown()是每个测试用例进行时都会执行的测试方法,前者为起始,后者为结束
    def setUp(self):    # 复写父类的方法,最左侧有标识,是每一个测试用例都会执行的 起始方法
        # 自定义设置开始步骤
        ########################################
        # 示例:
        # 使用浏览器载入登录页面流程,每个测试用例都会执行
        # 注意驱动写作self.driver,否则会变成方法变量,而不是实例变量
        s = Service(r'F:\Download\Browser\Edge\chromedriver.exe')  # 设置驱动所在路径
        self.driver = webdriver.Chrome(service=s)  # 从路径提取驱动
        self.driver.implicitly_wait(10)  # 设置每个步骤最大等待时间
        self.driver.get('http://localhost:8001/login/')  # GET方法访问本机端口,即注册页面
        self.driver.maximize_window()   # 最大化窗口

    def tearDown(self):     # 复写父类的方法,最左侧有标识,是每一个测试用例都会执行的 结束方法
        # 自定义设置结束步骤
        ########################################
        # 示例:
        # 关闭浏览器页面,每个测试用例都会执行
        self.driver.close()

########################################################################################

    def input(self, user=None, password=None, vcode=None):  # 根据实际需求编写的测试方法
        ########################################
        # 示例:
        # 写入用户名,密码,验证码,并且点击登录
        if user:    # 设定判定条件,有输入才键入,否则不键入
            self.driver.find_element('id', 'LAY-user-login-username').send_keys(user)   # 将参数键入指定位置
        if password:
            self.driver.find_element('id', 'LAY-user-login-password').send_keys(password)
        if vcode:
            self.driver.find_element('id', 'LAY-user-login-vercode').send_keys(vcode)
        self.driver.find_element('id', 'loginButton').click()   # 点击登录按钮
        pass
########################################################################################
    def test1_login_success(self):    # 设置测试用例1,测试成功登录的情况,命名为test+xxx,会按照test后的阿拉伯数字顺序执行,testdemo也执行,带test都会执行
        # 执行+断言(自定义断言方法,灵活多变)
        ########################################
        # 示例:
        # 执行
        user, password, vcode = 'admin', '123456', '1234'   # 给定参数
        self.input(user, password, vcode)   # 传入参数给测试方法,并通过self.实例调用方法
        # 断言
        time.sleep(2)   # 断言之前要设置一定时间,以便浏览器反应
        # 注意此断言方法的文本属性.text
        self.assertEqual(self.driver.find_element('class name', 'layui-logo').text, '接口自动化测试')
        # 断言因素必须得设置注册页的元素而不是跳转后页面的元素

    def test2_errorpassword(self):    # 设置测试用例2,测试输入7位错误密码的情况
        # 执行+断言(自定义断言方法,灵活多变)
        ########################################
        # 示例:
        # 执行
        user, password, vcode = 'admin', '1234567', '1234'   # 给定参数
        self.input(user, password, vcode)   # 传入参数给测试方法,并通过self.实例调用方法
        # 断言
        time.sleep(1)   # 断言之前要设置一定时间,以便浏览器反应
        # 注意此断言方法的文本属性.text
        self.assertEqual(self.driver.find_element('class name', 'layui-layer-title').text, '出错了')


if __name__ == '__main__':  # 设定条件执行unittest的主函数
    unittest.main()     # 调用主函数进行多个测试用例测试

  • 13
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
通过Python编写测试用例自动化测试CANoe,可以使用CANoe提供的CAPL语言来编写测试用例。具体步骤如下: 1. 编写CAPL测试用例,包括测试用例名称、测试用例步骤、期望结果等信息。 2. 使用Python的xml.etree.ElementTree模块创建XML格式的测试用例文件,将CAPL测试用例转换为XML格式。 3. 在Python读取XML格式的测试用例文件,并解析其测试用例信息。 4. 使用Python的win32com模块连接CANoe,并获取CANoe的Application对象。 5. 通过Application对象获取Measurement对象,并启动测量。 6. 通过Measurement对象获取MeasurementSetup对象,并加载测试用例。 7. 通过MeasurementSetup对象获取TestExecution对象,并开始测试。 8. 测试完成后,通过TestExecution对象获取测试结果,并保存结果。 代码示例: ```python import win32com.client as win32 import xml.etree.ElementTree as ET # 编写CAPL测试用例 capl_test_case = """ testcase TC_001 { teststep "Step 1" { // 执行测试步骤 } teststep "Step 2" { // 执行测试步骤 } expect "Expected Result" { // 验证测试结果 } } """ # 创建XML格式的测试用例文件 root = ET.Element("testcases") test_case = ET.SubElement(root, "testcase") test_case.set("name", "TC_001") test_step1 = ET.SubElement(test_case, "teststep") test_step1.set("name", "Step 1") test_step2 = ET.SubElement(test_case, "teststep") test_step2.set("name", "Step 2") expect_result = ET.SubElement(test_case, "expect") expect_result.set("name", "Expected Result") tree = ET.ElementTree(root) tree.write("test_case.xml") # 读取XML格式的测试用例文件 tree = ET.parse("test_case.xml") root = tree.getroot() test_case_name = root[0].get("name") test_step1_name = root[0][0].get("name") test_step2_name = root[0][1].get("name") expect_result_name = root[0][2].get("name") # 连接CANoe canoe = win32.Dispatch("CANoe.Application") # 获取Measurement对象 measurement = canoe.Measurement # 启动测量 measurement.Start() # 获取MeasurementSetup对象 measurement_setup = measurement.MeasurementSetup # 加载测试用例 measurement_setup.Load("test_case.xml") # 获取TestExecution对象 test_execution = measurement_setup.TestExecution # 开始测试 test_execution.Start() # 获取测试结果 result = test_execution.Result # 保存测试结果 result.Save("test_result.xml") # 停止测量 measurement.Stop() ``` 需要注意的是,CAPL测试用例需要根据实际情况进行编写,并将测试用例转换为XML格式。在XML格式的测试用例文件,需要包含测试用例名称、测试用例步骤、期望结果等信息。在使用Python连接CANoe并进行自动化测试时,需要先加载测试用例文件,然后开始测试并获取测试结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是羽十八ya

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值