目录结构
|
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}