diff --git a/youqu3/_setting/_setting.py b/youqu3/_setting/_setting.py index 456bcd69..abd80ba8 100644 --- a/youqu3/_setting/_setting.py +++ b/youqu3/_setting/_setting.py @@ -8,12 +8,12 @@ class _Setting(_DynamicSetting): """YouQu Config""" - PASSWORD: str = os.environ.get("PASSWORD") or "1" + PASSWORD: str = os.environ.get("YOUQU_PASSWORD") or "1" - TIMEOUT = os.environ.get("TIMEOUT") or 300 - LOG_LEVEL = os.environ.get("LOG_LEVEL") or "INFO" - RERUNS = os.environ.get("RERUNS") or 1 - RECORD_FAILED_CASE = os.environ.get("RECORD_FAILED_CASE") or 1 + TIMEOUT = os.environ.get("YOUQU_TIMEOUT") or 300 + LOG_LEVEL = os.environ.get("YOUQU_LOG_LEVEL") or "INFO" + RERUNS = os.environ.get("YOUQU_RERUNS") or 1 + RECORD_FAILED_NUM = os.environ.get("YOUQU_RECORD_FAILED_NUM") or 1 # OCR OCR_NETWORK_RETRY = 1 diff --git a/youqu3/driver/cli.py b/youqu3/driver/cli.py index 5b208ebd..a6817d37 100644 --- a/youqu3/driver/cli.py +++ b/youqu3/driver/cli.py @@ -30,9 +30,11 @@ def cli(): ... @click.option("-s", "--slaves", default=None, type=click.STRING, help=_slaves_help) @click.option("--txt", is_flag=True, default=False, type=click.BOOL, help="基于txt文件执行用例:youqu-tags.txt or youqu-keywords.txt") +@click.option("--reruns", default=None, type=click.STRING, help="重跑次数") @click.option("--job-start", default=None, type=click.STRING, help="测试结束之前执行") @click.option("--job-end", default=None, type=click.STRING, help="测试结束之后执行") @click.option("--pytest-opt", default=None, type=click.STRING, help="pytest命令行参数") +@click.option("--record-failed-num", default=None, type=click.STRING, help="从第几次重跑开始录屏") def run( workdir, path, @@ -41,9 +43,11 @@ def run( setup_plan, slaves, txt, + reruns, job_start, job_end, - pytest_opt + pytest_opt, + record_failed_num, ): """本地执行""" args = { @@ -54,9 +58,11 @@ def run( "setup_plan": setup_plan, "slaves": slaves, "txt": txt, + "reruns": reruns, "job_start": job_start, "job_end": job_end, "pytest_opt": pytest_opt, + "record_failed_num": record_failed_num, } from youqu3.driver.run import Run Run(**args).run() @@ -77,9 +83,11 @@ def run( @click.option("-s", "--slaves", default=None, type=click.STRING, help=_slaves_help) @click.option("--txt", is_flag=True, default=False, type=click.BOOL, help="基于txt文件执行用例:youqu-tags.txt or youqu-keywords.txt") +@click.option("--reruns", default=None, type=click.STRING, help="重跑次数") @click.option("--job-start", default=None, type=click.STRING, help="测试结束之前执行") @click.option("--job-end", default=None, type=click.STRING, help="测试结束之后执行") @click.option("--pytest-opt", default=None, type=click.STRING, help="pytest命令行参数") +@click.option("--record-failed-num", default=None, type=click.STRING, help="从第几次重跑开始录屏") def remote( clients, workdir, @@ -88,9 +96,11 @@ def remote( tags, slaves, txt, + reruns, job_start, job_end, pytest_opt, + record_failed_num, ): """远程控制执行""" args = { @@ -101,9 +111,11 @@ def remote( "tags": tags, "slaves": slaves, "txt": txt, + "reruns": reruns, "job_start": job_start, "job_end": job_end, "pytest_opt": pytest_opt, + "record_failed_num": record_failed_num, } from youqu3.driver.remote import Remote Remote(**args).run() diff --git a/youqu3/driver/remote.py b/youqu3/driver/remote.py index 1bd59676..d9f27c31 100644 --- a/youqu3/driver/remote.py +++ b/youqu3/driver/remote.py @@ -29,9 +29,11 @@ def __init__( tags=None, slaves=None, txt=None, + reruns=None, job_start=None, job_end=None, pytest_opt=None, + record_failed_num=None, **kwargs ): logger("INFO") @@ -43,9 +45,11 @@ def __init__( self.clients = clients self.slaves = slaves self.txt = txt + self.reruns = reruns self.job_start = job_start self.job_end = job_end self.pytest_opt = pytest_opt + self.record_failed_num = record_failed_num if not self.clients: raise ValueError("REMOTE驱动模式, 未传入远程客户端信息:-c/--clients user@ip:pwd") @@ -238,12 +242,16 @@ def generate_cmd(self): cmd.extend(["-m", f"'{tags_txt}'"]) if self.slaves: cmd.extend(["--slaves", f"'{self.slaves}'"]) + if self.reruns: + cmd.extend(["--reruns",self.reruns]) if self.job_start: cmd.extend(["--job-start",f"'{self.job_start}'"]) if self.job_end: cmd.extend(["--job-end",f"'{self.job_end}"]) if self.pytest_opt: cmd.extend([i.strip() for i in self.pytest_opt]) + if self.record_failed_num or setting.RECORD_FAILED_NUM: + cmd.extend(["--record_failed_num", self.record_failed_num or setting.RECORD_FAILED_NUM]) return cmd def run_test(self, user, _ip, password): diff --git a/youqu3/driver/run.py b/youqu3/driver/run.py index d63af2dc..ae540dcc 100644 --- a/youqu3/driver/run.py +++ b/youqu3/driver/run.py @@ -4,12 +4,11 @@ # SPDX-License-Identifier: GPL-2.0-only import os.path import pathlib +import pytest import random import re import sys -import pytest - from youqu3 import logger, setting @@ -25,9 +24,11 @@ def __init__( setup_plan=None, slaves=None, txt=None, + reruns=None, job_start=None, job_end=None, pytest_opt=None, + record_failed_num=None, **kwargs, ): logger("INFO") @@ -39,9 +40,11 @@ def __init__( self.setup_plan = setup_plan self.slaves = slaves self.txt = txt + self.reruns = reruns self.job_start = job_start self.job_end = job_end self.pytest_opt = pytest_opt + self.record_failed_num = record_failed_num self.rootdir = pathlib.Path(".").absolute() self.report_path = self.rootdir / "report" @@ -104,11 +107,18 @@ def generate_cmd(self): if self.slaves: cmd.extend(["--slaves", f"'{self.slaves}'"]) + if self.record_failed_num or setting.RECORD_FAILED_NUM: + cmd.extend(["--record_failed_num", self.record_failed_num or setting.RECORD_FAILED_NUM]) + if self.pytest_opt: + cmd.extend([i.strip() for i in self.pytest_opt]) + + cmd.extend([ + f"--reruns={self.reruns or setting.RERUNS}", + f"--timeout={setting.TIMEOUT}", + ]) if self.setup_plan: cmd.append("--setup-plan") - if self.pytest_opt: - cmd.extend([i.strip() for i in self.pytest_opt]) else: cmd.extend([ "--json-report", @@ -124,11 +134,6 @@ def generate_cmd(self): "--no-header", ]) - cmd.extend([ - f"--reruns={setting.RERUNS}", - f"--timeout={setting.TIMEOUT}", - ]) - return cmd def job_start_driver(self):