Selenium之YAML数据驱动测试实战。

YAML的基础介绍 :https://www.jianshu.com/p/eaa1bf01b3a6

新建一个YAML存储数据的文件,后缀名为“.yaml”,内容如下:

案例说明:通过YAML数据来定义测试用例的参数。

案例代码:

import yaml, unittest, time
from selenium import webdriver


def read_yaml_data():
    "获取yaml的数据"
    yaml_data = open(r"D:\OneDrive\Code\Pycharm_Code\Test_Framework\Test_Automation\selenium3_code\DATA\data_0304.yaml",
                     'r', encoding='utf-8')
    data = yaml.load(yaml_data)
    yaml_data.close()
    print(data)
    return data


class Test_Login(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.test_url = "https://mail.sohu.com/fe/#/login"

    def tearDown(self):
        self.driver.quit()

    def by_xpath(self, usernameloc):
        return self.driver.find_element_by_xpath(usernameloc)

    def get_assert_text(self):
        try:
            time.sleep(2)
            return self.by_xpath(
                "//html[@id='ng-app']//div[@id='mailContent']//div[@class='hello ng-scope']/span[1]").text
        except Exception as message:
            print("报错,Error:%s" % message)

    def sohu_login(self, user, pwd):
        """封装登录功能"""
        self.by_xpath("//html[@id='ng-app']//div[@id='theme']//div[@class='ipt-box pos-r']/input[@type='text']").clear()
        self.by_xpath(
            "//html[@id='ng-app']//div[@id='theme']//div[@class='ipt-box pos-r']/input[@type='text']").send_keys(user)
        self.by_xpath("//html[@id='ng-app']//div[@id='theme']//input[@type='password']").send_keys(pwd)
        self.by_xpath("//html[@id='ng-app']//div[@id='theme']//input[@value='登 录']").click()

    # 测试用例1
    def sohu_login_test_01(self):
        self.driver.get(self.test_url)
        time.sleep(2)
        self.sohu_login(read_yaml_data()['userNull']['username'], read_yaml_data()['userNull']['password'])
        self.assertEqual(self.get_assert_text(), read_yaml_data()['userNull']['assertText'])

    # 测试用例2
    def sohu_login_test_02(self):
        self.driver.get(self.test_url)
        time.sleep(2)
        self.sohu_login(read_yaml_data()['passwordNull']['username1'], read_yaml_data()['passwordNull']['password1'])
        self.assertEqual(self.get_assert_text(), read_yaml_data()['passwordNull']['assertText1'])


if __name__ == "__main__":
    unittest.main()

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Selenium可以通过数据驱动的方式进行测试,即使用不同的测试数据来执行相同的测试用例。 具体实现步骤如下: 1.准备测试数据测试数据可以存储在Excel、CSV等文件中,也可以存储在数据库中。 2.编写测试用例。测试用例需要使用Selenium WebDriver API实现测试操作,同时需要读取测试数据并将其传递给测试用例。 3.使用数据驱动框架执行测试数据驱动框架可以使用TestNG、JUnit等测试框架来实现。在测试框架中,使用数据提供者来读取测试数据,并将其传递给测试用例。测试框架会将测试数据测试用例结合起来执行测试,并生成测试报告。 以下是一个简单的示例代码,演示如何使用数据驱动测试: ```python import unittest from selenium import webdriver import csv class DataDrivenTest(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() def tearDown(self): self.driver.quit() @classmethod def setUpClass(cls): cls.data = [] with open('testdata.csv', 'r') as file: reader = csv.reader(file) for row in reader: cls.data.append(row) def test_login(self): for row in self.data: username = row[0] password = row[1] self.driver.get('https://example.com') # 执行登录操作 self.driver.find_element_by_name('username').send_keys(username) self.driver.find_element_by_name('password').send_keys(password) self.driver.find_element_by_name('submit').click() # 断言登录是否成功 self.assertTrue('Welcome' in self.driver.page_source) if __name__ == '__main__': unittest.main() ``` 在上面的示例中,我们使用了unittest框架和CSV文件来实现数据驱动测试。setUpClass()方法中,我们读取了testdata.csv文件中的测试数据,并存储在一个类变量中。在test_login()方法中,我们遍历测试数据,并使用Selenium WebDriver API执行测试操作。测试框架会将每组测试数据测试用例结合起来执行测试,并生成测试报告。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值