web自動(dòng)化項(xiàng)目框架搭建
1、項(xiàng)目結(jié)構(gòu)
web自動(dòng)化框架的設(shè)計(jì),同接口自動(dòng)化框架一樣,采用分層設(shè)計(jì)。
文件或目錄 | 說(shuō)明 |
---|---|
common | 常用模塊,常用的一些函數(shù)封裝 |
testcases | 用例模塊,所有的測(cè)試用例 |
test_data | 用例數(shù)據(jù) |
logs | 日志目錄 |
reports | 報(bào)告 |
settings.py | 配置 |
main.py | 項(xiàng)目入口 |
2、settings.py
import os
# 項(xiàng)目根目錄
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
# 測(cè)試用例路徑
TEST_CASE_DIR = os.path.join(BASE_DIR, 'testcases')
# 項(xiàng)目主機(jī)
PROJECT_HOST = 'https://blog.csdn.net'
# 接口信息
INTERFACE = {
'login': PROJECT_HOST + '/testleaf'
}
# 日志配置
LOG_CONFIG = {
'name': 'project',
'filename': os.path.join(BASE_DIR, 'logs', 'testleaf.log'),
# 'encoding': 'utf-8',
# 'fmt': None,
# 'when': 'd',
# 'interval': 1,
# 'backup_count': 7,
'debug': True
}
# 測(cè)試賬戶信息
TEST_NORMAL_USERNAME = 'admin'
TEST_NORMAL_PASSWORD = '888888'
3、main.py
import pytest
import settings
if __name__ == '__main__':
pytest.main(['-s', '-v', settings.TEST_CASE_DIR])
4、common\log_handler.py文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-677146.html
import logging
from logging.handlers import TimedRotatingFileHandler
def get_logger(name, filename, encoding='utf-8', fmt=None, when='d', interval=1, backup_count=7, debug=False):
logger = logging.getLogger(name)
logger.setLevel(logging.DEBUG)
# 文件處理器的等級(jí)一般情況一定比控制臺(tái)要高
if debug:
file_level = logging.DEBUG
console_level = logging.DEBUG
else:
file_level = logging.WARNING
console_level = logging.INFO
if fmt is None:
fmt = '%(levelname)s %(asctime)s [%(filename)s-->line:%(lineno)d]:%(message)s'
file_handler = TimedRotatingFileHandler(
filename=filename, when=when, interval=interval, backupCount=backup_count, encoding=encoding)
file_handler.setLevel(file_level)
console_handler = logging.StreamHandler()
console_handler.setLevel(console_level)
formatter = logging.Formatter(fmt=fmt)
file_handler.setFormatter(formatter)
console_handler.setFormatter(formatter)
logger.addHandler(file_handler)
logger.addHandler(console_handler)
return logger
if __name__ == '__main__':
import settings
log = get_logger(**settings.LOG_CONFIG)
log.info('我是普通信息')
log.warning('我是警告信息')
5、testcases\test_login.py文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-677146.html
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import settings
class TestLogin:
def test_login(self):
# 1. 打開(kāi)瀏覽器
with webdriver.Chrome() as driver:
# 2. 訪問(wèn)登錄頁(yè)面
driver.get(settings.INTERFACE['login'])
# 3. 登錄
# 3.1 定位用戶名輸入框
wait = WebDriverWait(driver, timeout=3)
username_input = wait.until(EC.visibility_of_element_located(('xpath', '//input[@name="phone"]')))
# 3.2 輸入用戶名
username_input.send_keys(settings.TEST_NORMAL_USERNAME)
# 3.3 定位密碼輸入框
# 3.4 輸入密碼
# 3.5 定位登錄按鈕
# 3.6 點(diǎn)擊登錄按鈕
# 4. 斷言登錄:根據(jù)右上角的退出按鈕的出現(xiàn)
assert wait.until(EC.visibility_of_element_located(('xpath', '//a[text()="退出"]')))
到了這里,關(guān)于selenium進(jìn)階之web自動(dòng)化項(xiàng)目框架搭建(Python版)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!