python 自动化测试结构

目录结构

|
base
	-base_page.py
|
data
	-test_api.yaml
|
po
	-baidu_page.py
|
testcase
	-test_baidu.py
	-test_api.py
	-conftest.py
|
utils
	-yaml.util.py
main.pu
pytest.ini

1, base基础层

base文件夹base_page.py

from selenium import webdriver
# 第一次 base基础层
class BasePage:
    def __init__(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.implicitly_wait(2)
        self.driver.get('https://www.baidu.com/')
    def find_obj(self, *args):
        return self.driver.find_element(*args)

2,第二层 po页面层 继承BasePage基础层

po文件夹baidu_page.py

import time

from selenium.webdriver.common.by import By

from base.base_page import BasePage

# 第二层 po页面层
# 继承BasePage基础层
class BaiduPage(BasePage):
    # 页面元素定位
    baidu_text_loc = (By.ID,'kw')
    baidu_submit_loc = (By.ID,'su')
    # 页面元素对象
    def get_text_obj(self):
        return self.find_obj(*BaiduPage.baidu_text_loc)
    def get_submit_obj(self):
        return self.find_obj(*BaiduPage.baidu_submit_loc)
    # 页面动作
    def serch(self):
        self.get_text_obj().send_keys('python')
        self.get_submit_obj().click()
        time.sleep(14)

3,测试用例

testcase文件夹test_baidu.py

from po.baidu_page import BaiduPage


class TestBaidu:
    def test01_baidu_serch(self):
        BaiduPage().serch()


test_api.py

import os
import pytest
import requests

from utils.yaml_util import YamlUtil


class TestApi:
    @pytest.mark.parametrize('args', YamlUtil(os.getcwd() + '/data/test_api.yaml').read_yaml())
    def test_api(self, args):
        url = args['request']['url']
        params = args['request']['params']
        res = requests.get(url, params=params)
        print(res.text)

pytest.ini

[pytest]
addopts = -vs --alluredir ./report
testpaths = ./testcase
python_files = test_*.py
python_classes = Test*
python_functions = test
markers =
        smoke:冒烟用例
        usermanage:用户管理模块

conftest.py

import pytest

@pytest.fixture(scope='function',params=['123'])
def login(request):
    print('前置')
    yield
    print('后置')

test_api.yaml

-
  name: 获取token鉴权码接口
  request:
    url: https://api.weixin.qq.com/cgi-bin/token
    method: get
    headers:
      Content-Type: application/json
    params:
      grant_type: client_credential
      appid: wx6b11b3efd1cdc290
      secret: 106a9c6157c4db5f6029918738f9529d
    validate:
      - eq: {expires_in: 7200}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值