From b0e5ccb1b6bd8e7f8a9e233eae03f40e535395f9 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Thu, 18 Jun 2020 18:46:34 +0800 Subject: [PATCH] feat: make testcase with weight --- examples/postman_echo/request_methods/demo_testsuite.yml | 2 ++ .../demo_testsuite_yml/request_with_functions_test.py | 3 ++- .../request_with_testcase_reference_test.py | 3 ++- examples/postman_echo/request_methods/hardcode_test.py | 2 +- .../request_methods/request_with_functions.yml | 1 + .../request_methods/request_with_functions_test.py | 3 ++- .../request_with_testcase_reference_test.py | 2 +- .../request_methods/request_with_variables_test.py | 2 +- .../request_methods/validate_with_functions_test.py | 2 +- .../request_methods/validate_with_variables_test.py | 2 +- httprunner/__init__.py | 3 ++- httprunner/ext/locust/__init__.py | 2 ++ httprunner/ext/locust/locustfile.py | 3 +-- httprunner/make.py | 7 +++++++ 14 files changed, 26 insertions(+), 11 deletions(-) diff --git a/examples/postman_echo/request_methods/demo_testsuite.yml b/examples/postman_echo/request_methods/demo_testsuite.yml index 1825efe3..4c367a6b 100644 --- a/examples/postman_echo/request_methods/demo_testsuite.yml +++ b/examples/postman_echo/request_methods/demo_testsuite.yml @@ -6,6 +6,7 @@ testcases: - name: request with functions testcase: request_methods/request_with_functions.yml + weight: 2 variables: foo1: testcase_ref_bar11 expect_foo1: testcase_ref_bar11 @@ -13,6 +14,7 @@ testcases: - name: request with referenced testcase testcase: request_methods/request_with_testcase_reference.yml + weight: 3 variables: foo1: testcase_ref_bar12 expect_foo1: testcase_ref_bar12 diff --git a/examples/postman_echo/request_methods/demo_testsuite_yml/request_with_functions_test.py b/examples/postman_echo/request_methods/demo_testsuite_yml/request_with_functions_test.py index 65fb3ced..99552365 100644 --- a/examples/postman_echo/request_methods/demo_testsuite_yml/request_with_functions_test.py +++ b/examples/postman_echo/request_methods/demo_testsuite_yml/request_with_functions_test.py @@ -1,4 +1,4 @@ -# NOTE: Generated By HttpRunner v3.0.13 +# NOTE: Generated By HttpRunner v3.1.0 # FROM: examples/postman_echo/request_methods/request_with_functions.yml from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase @@ -18,6 +18,7 @@ class TestCaseRequestWithFunctions(HttpRunner): .base_url("https://postman-echo.com") .verify(False) .export(*["foo3"]) + .locust_weight(2) ) teststeps = [ diff --git a/examples/postman_echo/request_methods/demo_testsuite_yml/request_with_testcase_reference_test.py b/examples/postman_echo/request_methods/demo_testsuite_yml/request_with_testcase_reference_test.py index 51fbf754..1cbf8a3e 100644 --- a/examples/postman_echo/request_methods/demo_testsuite_yml/request_with_testcase_reference_test.py +++ b/examples/postman_echo/request_methods/demo_testsuite_yml/request_with_testcase_reference_test.py @@ -1,4 +1,4 @@ -# NOTE: Generated By HttpRunner v3.0.13 +# NOTE: Generated By HttpRunner v3.1.0 # FROM: examples/postman_echo/request_methods/request_with_testcase_reference.yml import os @@ -26,6 +26,7 @@ class TestCaseRequestWithTestcaseReference(HttpRunner): ) .base_url("https://postman-echo.com") .verify(False) + .locust_weight(3) ) teststeps = [ diff --git a/examples/postman_echo/request_methods/hardcode_test.py b/examples/postman_echo/request_methods/hardcode_test.py index b9b77bd3..37d8f295 100644 --- a/examples/postman_echo/request_methods/hardcode_test.py +++ b/examples/postman_echo/request_methods/hardcode_test.py @@ -1,4 +1,4 @@ -# NOTE: Generated By HttpRunner v3.0.13 +# NOTE: Generated By HttpRunner v3.1.0 # FROM: examples/postman_echo/request_methods/hardcode.yml from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase diff --git a/examples/postman_echo/request_methods/request_with_functions.yml b/examples/postman_echo/request_methods/request_with_functions.yml index d2675cd6..b99bdbc3 100644 --- a/examples/postman_echo/request_methods/request_with_functions.yml +++ b/examples/postman_echo/request_methods/request_with_functions.yml @@ -7,6 +7,7 @@ config: expect_foo2: config_bar2 base_url: "https://postman-echo.com" verify: False + weight: 2 export: ["foo3"] teststeps: diff --git a/examples/postman_echo/request_methods/request_with_functions_test.py b/examples/postman_echo/request_methods/request_with_functions_test.py index 96694e06..bf25e103 100644 --- a/examples/postman_echo/request_methods/request_with_functions_test.py +++ b/examples/postman_echo/request_methods/request_with_functions_test.py @@ -1,4 +1,4 @@ -# NOTE: Generated By HttpRunner v3.0.13 +# NOTE: Generated By HttpRunner v3.1.0 # FROM: examples/postman_echo/request_methods/request_with_functions.yml from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase @@ -18,6 +18,7 @@ class TestCaseRequestWithFunctions(HttpRunner): .base_url("https://postman-echo.com") .verify(False) .export(*["foo3"]) + .locust_weight(2) ) teststeps = [ diff --git a/examples/postman_echo/request_methods/request_with_testcase_reference_test.py b/examples/postman_echo/request_methods/request_with_testcase_reference_test.py index f7534307..fb0bba19 100644 --- a/examples/postman_echo/request_methods/request_with_testcase_reference_test.py +++ b/examples/postman_echo/request_methods/request_with_testcase_reference_test.py @@ -1,4 +1,4 @@ -# NOTE: Generated By HttpRunner v3.0.13 +# NOTE: Generated By HttpRunner v3.1.0 # FROM: examples/postman_echo/request_methods/request_with_testcase_reference.yml import os diff --git a/examples/postman_echo/request_methods/request_with_variables_test.py b/examples/postman_echo/request_methods/request_with_variables_test.py index 0e54c55c..cb287b12 100644 --- a/examples/postman_echo/request_methods/request_with_variables_test.py +++ b/examples/postman_echo/request_methods/request_with_variables_test.py @@ -1,4 +1,4 @@ -# NOTE: Generated By HttpRunner v3.0.13 +# NOTE: Generated By HttpRunner v3.1.0 # FROM: examples/postman_echo/request_methods/request_with_variables.yml from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase diff --git a/examples/postman_echo/request_methods/validate_with_functions_test.py b/examples/postman_echo/request_methods/validate_with_functions_test.py index 786ab670..56c5f000 100644 --- a/examples/postman_echo/request_methods/validate_with_functions_test.py +++ b/examples/postman_echo/request_methods/validate_with_functions_test.py @@ -1,4 +1,4 @@ -# NOTE: Generated By HttpRunner v3.0.13 +# NOTE: Generated By HttpRunner v3.1.0 # FROM: examples/postman_echo/request_methods/validate_with_functions.yml from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase diff --git a/examples/postman_echo/request_methods/validate_with_variables_test.py b/examples/postman_echo/request_methods/validate_with_variables_test.py index ed5cc3ca..6ed3d459 100644 --- a/examples/postman_echo/request_methods/validate_with_variables_test.py +++ b/examples/postman_echo/request_methods/validate_with_variables_test.py @@ -1,4 +1,4 @@ -# NOTE: Generated By HttpRunner v3.0.13 +# NOTE: Generated By HttpRunner v3.1.0 # FROM: examples/postman_echo/request_methods/validate_with_variables.yml from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase diff --git a/httprunner/__init__.py b/httprunner/__init__.py index f3eb86ca..f731c024 100644 --- a/httprunner/__init__.py +++ b/httprunner/__init__.py @@ -1,7 +1,8 @@ __version__ = "3.1.0" __description__ = "One-stop solution for HTTP(S) testing." -from httprunner.ext.locust import main_locusts # import firstly for monkey patch if needed +# import firstly for monkey patch if needed +from httprunner.ext.locust import main_locusts from httprunner.runner import HttpRunner from httprunner.testcase import Config, Step, RunRequest, RunTestCase diff --git a/httprunner/ext/locust/__init__.py b/httprunner/ext/locust/__init__.py index bd539d54..bf417951 100644 --- a/httprunner/ext/locust/__init__.py +++ b/httprunner/ext/locust/__init__.py @@ -30,6 +30,7 @@ def is_httprunner_testcase(item): """ check if a variable is a HttpRunner testcase class """ from httprunner import HttpRunner + # TODO: skip referenced testcase return bool( inspect.isclass(item) @@ -89,6 +90,7 @@ def main_locusts(): sys.exit(1) from httprunner.make import main_make + global pytest_files testcase_file_path = sys.argv[testcase_index] pytest_files = main_make([testcase_file_path]) diff --git a/httprunner/ext/locust/locustfile.py b/httprunner/ext/locust/locustfile.py index 77598c79..77279db1 100644 --- a/httprunner/ext/locust/locustfile.py +++ b/httprunner/ext/locust/locustfile.py @@ -12,8 +12,7 @@ class HttpRunnerUser(HttpUser): def on_start(self): locust_tests = prepare_locust_tests() self.testcase_runners = [ - testcase().with_session(self.client) - for testcase in locust_tests + testcase().with_session(self.client) for testcase in locust_tests ] @task diff --git a/httprunner/make.py b/httprunner/make.py index c4df5a93..d4804fdb 100644 --- a/httprunner/make.py +++ b/httprunner/make.py @@ -184,6 +184,9 @@ def make_config_chain_style(config: Dict) -> Text: if "export" in config: config_chain_style += f'.export(*{config["export"]})' + if "weight" in config: + config_chain_style += f'.locust_weight({config["weight"]})' + return config_chain_style @@ -442,6 +445,10 @@ def make_testsuite(testsuite: Dict) -> NoReturn: ) testcase_dict["config"]["variables"].update(testcase_variables) + # override weight + weight = testcase.get("weight", 1) + testcase_dict["config"]["weight"] = weight + # make testcase testcase_pytest_path = make_testcase(testcase_dict, testsuite_dir) pytest_files_run_set.add(testcase_pytest_path)