通过yaml文件配置自动化测试程序

简介: 通过yaml文件可以将自动化测试环境,测试数据和测试行为分开,请看一下案例

通过yaml文件可以将自动化测试环境,测试数据和测试行为分开,请看一下案例

env1.yaml

environments:
  staging:
    base_url: "https://staging.api.com"
    test_data:
      valid_user:
        username: "test_staging@company.com"
        password: "Pass123"
  production:
    base_url: "https://api.com"
    test_data:
      valid_user:
        username: "real_user@company.com"
        password: "SecureP@ss"

这个配置文件中,区分了测试环境和生产环境的URL和登录用户名和密码。

env2.yaml

defaults: &defaults
  retry_count: 3
  log_level: "INFO"
environments:
  staging:
    <<: *defaults  # 继承默认配置
    base_url: "https://staging.api.com"
  production:
    <<: *defaults
    base_url: "https://api.com"
    log_level: "WARN"  # 覆盖默认值

这个配置文件中,区分了测试环境和生产环境的URL以及继承同样的重试次数和log级别。下面来看一个具体的例子

ebuiness.yaml

environments:
  java:
    base_url: "http://127.0.0.1:8080/ChatGPTEbusiness/jsp/LoginPage.jsp"
    credentials:
      username: "User0001"
      password: "Password@000"
  django:
    base_url: "http://127.0.0.1:8000/"
    credentials:
      username: "cindy"
      password: "123456"

定义了Java环境的URL和用户名密码以及Django环境的URL和用户名密码。python程序如下。

ebusiness.py

#!/usr/bin/env python
#coding:utf-8
from selenium import webdriver
import unittest, yaml
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
class TestConfig:
    def __init__(self, env):
        with open('ebuiness.yaml') as f:
            self.config = yaml.safe_load(f)['environments'][env]
    @property
    def java_url(self):
        return self.config['base_url']
    @property
    def java_username(self):
        return self.config.get('credentials', {
   }).get('username')
    @property
    def java_password(self):
        return self.config.get('credentials', {
   }).get('password')
    @property
    def django_url(self):
        return self.config['base_url']
    @property
    def django_username(self):
        return self.config.get('credentials', {
   }).get('username')
    @property
    def django_password(self):
        return self.config.get('credentials', {
   }).get('password')  # 修复:改为获取password
class CheckLogin(unittest.TestCase):
    def setUp(self):
        driver_path = "C:\\Lib\\"
        service = Service(executable_path=driver_path + "chromedriver.exe")
        options = webdriver.ChromeOptions()
        self.driver = webdriver.Chrome(service=service, options=options)  # 添加service参数
    def login(self,username,password,env,url):
        config = TestConfig(env=env)
        self.driver.get(config.java_url)
        self.driver.find_element(By.NAME,"username").send_keys(username)
        self.driver.find_element(By.NAME,"password").send_keys(password)
        if env=="java":
            self.driver.find_element(By.XPATH,"//*[@id='loginForm']/button").click()
        elif env=="django":
            self.driver.find_element(By.CLASS_NAME,"form-signin").submit()
        else:
            print("env "+evn+"is error ")
    def test_java_ebusiness(self):
        env="java"
        config = TestConfig(env)
        self.login(config.java_username,config.java_password,env,config.java_url)
    def test_django_ebusiness(self):
        env="django"
        config = TestConfig(env="django")
        self.login(config.django_username,config.django_password,env,config.django_url)
    def tearDown(self):
        self.driver.quit()
if __name__ == "__main__":
    unittest.main()
目录
相关文章
|
7天前
|
人工智能 运维 安全
|
5天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
606 21
|
12天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
969 110
|
6天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。