mirror of
https://github.com/httprunner/httprunner.git
synced 2026-09-04 23:16:57 +08:00
refactor: replace httpbin service with docker
This commit is contained in:
@@ -30,6 +30,10 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
python-version: ${{ matrix.python-version }}
|
python-version: ${{ matrix.python-version }}
|
||||||
architecture: x64
|
architecture: x64
|
||||||
|
- name: start httpbin server with docker
|
||||||
|
run: |
|
||||||
|
docker pull kennethreitz/httpbin
|
||||||
|
docker run -p 80:80 kennethreitz/httpbin
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
pip install poetry
|
pip install poetry
|
||||||
|
|||||||
@@ -28,6 +28,10 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
python-version: ${{ matrix.python-version }}
|
python-version: ${{ matrix.python-version }}
|
||||||
architecture: x64
|
architecture: x64
|
||||||
|
- name: start httpbin server with docker
|
||||||
|
run: |
|
||||||
|
docker pull kennethreitz/httpbin
|
||||||
|
docker run -p 80:80 kennethreitz/httpbin
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
python -m pip install --upgrade pip
|
python -m pip install --upgrade pip
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
config:
|
config:
|
||||||
name: basic test with httpbin
|
name: basic test with httpbin
|
||||||
base_url: https://httpbin.org/
|
base_url: ${get_httpbin_server()}
|
||||||
|
|
||||||
teststeps:
|
teststeps:
|
||||||
-
|
-
|
||||||
@@ -10,7 +10,7 @@ teststeps:
|
|||||||
method: GET
|
method: GET
|
||||||
validate:
|
validate:
|
||||||
- eq: ["status_code", 200]
|
- eq: ["status_code", 200]
|
||||||
- eq: [body.headers.Host, "httpbin.org"]
|
- eq: [body.headers.Host, "127.0.0.1"]
|
||||||
|
|
||||||
-
|
-
|
||||||
name: user-agent
|
name: user-agent
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
# NOTE: Generated By HttpRunner v4.1.4
|
# NOTE: Generated By HttpRunner v4.3.5
|
||||||
# FROM: basic.yml
|
# FROM: basic.yml
|
||||||
from httprunner import HttpRunner, Config, Step, RunRequest
|
from httprunner import HttpRunner, Config, Step, RunRequest
|
||||||
|
|
||||||
|
|
||||||
class TestCaseBasic(HttpRunner):
|
class TestCaseBasic(HttpRunner):
|
||||||
|
|
||||||
config = Config("basic test with httpbin").base_url("https://httpbin.org/")
|
config = Config("basic test with httpbin").base_url("${get_httpbin_server()}")
|
||||||
|
|
||||||
teststeps = [
|
teststeps = [
|
||||||
Step(
|
Step(
|
||||||
@@ -13,7 +13,7 @@ class TestCaseBasic(HttpRunner):
|
|||||||
.get("/headers")
|
.get("/headers")
|
||||||
.validate()
|
.validate()
|
||||||
.assert_equal("status_code", 200)
|
.assert_equal("status_code", 200)
|
||||||
.assert_equal("body.headers.Host", "httpbin.org")
|
.assert_equal("body.headers.Host", "127.0.0.1")
|
||||||
),
|
),
|
||||||
Step(
|
Step(
|
||||||
RunRequest("user-agent")
|
RunRequest("user-agent")
|
||||||
|
|||||||
@@ -6,9 +6,11 @@ import uuid
|
|||||||
|
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
|
from httprunner.utils_test import HTTP_BIN_URL
|
||||||
|
|
||||||
|
|
||||||
def get_httpbin_server():
|
def get_httpbin_server():
|
||||||
return "https://httpbin.org"
|
return HTTP_BIN_URL
|
||||||
|
|
||||||
|
|
||||||
def setup_testcase(variables):
|
def setup_testcase(variables):
|
||||||
@@ -17,7 +19,7 @@ def setup_testcase(variables):
|
|||||||
|
|
||||||
|
|
||||||
def teardown_testcase():
|
def teardown_testcase():
|
||||||
logger.info(f"teardown_testcase.")
|
logger.info("teardown_testcase.")
|
||||||
|
|
||||||
|
|
||||||
def setup_teststep(request, variables):
|
def setup_teststep(request, variables):
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# NOTE: Generated By HttpRunner v4.1.4
|
# NOTE: Generated By HttpRunner v4.3.5
|
||||||
# FROM: hooks.yml
|
# FROM: hooks.yml
|
||||||
from httprunner import HttpRunner, Config, Step, RunRequest
|
from httprunner import HttpRunner, Config, Step, RunRequest
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# NOTE: Generated By HttpRunner v4.1.4
|
# NOTE: Generated By HttpRunner v4.3.5
|
||||||
# FROM: load_image.yml
|
# FROM: load_image.yml
|
||||||
from httprunner import HttpRunner, Config, Step, RunRequest
|
from httprunner import HttpRunner, Config, Step, RunRequest
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# NOTE: Generated By HttpRunner v4.1.4
|
# NOTE: Generated By HttpRunner v4.3.5
|
||||||
# FROM: upload.yml
|
# FROM: upload.yml
|
||||||
from httprunner import HttpRunner, Config, Step, RunRequest
|
from httprunner import HttpRunner, Config, Step, RunRequest
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
config:
|
config:
|
||||||
name: basic test with httpbin
|
name: basic test with httpbin
|
||||||
base_url: https://httpbin.org/
|
base_url: ${get_httpbin_server()}
|
||||||
|
|
||||||
teststeps:
|
teststeps:
|
||||||
-
|
-
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
# NOTE: Generated By HttpRunner v4.1.4
|
# NOTE: Generated By HttpRunner v4.3.5
|
||||||
# FROM: validate.yml
|
# FROM: validate.yml
|
||||||
from httprunner import HttpRunner, Config, Step, RunRequest
|
from httprunner import HttpRunner, Config, Step, RunRequest
|
||||||
|
|
||||||
|
|
||||||
class TestCaseValidate(HttpRunner):
|
class TestCaseValidate(HttpRunner):
|
||||||
|
|
||||||
config = Config("basic test with httpbin").base_url("https://httpbin.org/")
|
config = Config("basic test with httpbin").base_url("${get_httpbin_server()}")
|
||||||
|
|
||||||
teststeps = [
|
teststeps = [
|
||||||
Step(
|
Step(
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from httprunner.client import HttpSession
|
from httprunner.client import HttpSession
|
||||||
|
from httprunner.utils_test import HTTP_BIN_URL
|
||||||
|
|
||||||
|
|
||||||
class TestHttpSession(unittest.TestCase):
|
class TestHttpSession(unittest.TestCase):
|
||||||
@@ -8,7 +9,7 @@ class TestHttpSession(unittest.TestCase):
|
|||||||
self.session = HttpSession()
|
self.session = HttpSession()
|
||||||
|
|
||||||
def test_request_http(self):
|
def test_request_http(self):
|
||||||
self.session.request("get", "http://httpbin.org/get")
|
self.session.request("get", f"{HTTP_BIN_URL}/get")
|
||||||
address = self.session.data.address
|
address = self.session.data.address
|
||||||
self.assertGreater(len(address.server_ip), 0)
|
self.assertGreater(len(address.server_ip), 0)
|
||||||
self.assertEqual(address.server_port, 80)
|
self.assertEqual(address.server_port, 80)
|
||||||
@@ -26,7 +27,7 @@ class TestHttpSession(unittest.TestCase):
|
|||||||
def test_request_http_allow_redirects(self):
|
def test_request_http_allow_redirects(self):
|
||||||
self.session.request(
|
self.session.request(
|
||||||
"get",
|
"get",
|
||||||
"http://httpbin.org/redirect-to?url=https%3A%2F%2Fgithub.com",
|
f"{HTTP_BIN_URL}/redirect-to?url=https%3A%2F%2Fgithub.com",
|
||||||
allow_redirects=True,
|
allow_redirects=True,
|
||||||
)
|
)
|
||||||
address = self.session.data.address
|
address = self.session.data.address
|
||||||
@@ -50,7 +51,7 @@ class TestHttpSession(unittest.TestCase):
|
|||||||
def test_request_http_not_allow_redirects(self):
|
def test_request_http_not_allow_redirects(self):
|
||||||
self.session.request(
|
self.session.request(
|
||||||
"get",
|
"get",
|
||||||
"http://httpbin.org/redirect-to?url=https%3A%2F%2Fgithub.com",
|
f"{HTTP_BIN_URL}/redirect-to?url=https%3A%2F%2Fgithub.com",
|
||||||
allow_redirects=False,
|
allow_redirects=False,
|
||||||
)
|
)
|
||||||
address = self.session.data.address
|
address = self.session.data.address
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import os
|
|||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from httprunner import compat, exceptions, loader
|
from httprunner import compat, exceptions, loader
|
||||||
|
from httprunner.utils_test import HTTP_BIN_URL
|
||||||
|
|
||||||
|
|
||||||
class TestCompat(unittest.TestCase):
|
class TestCompat(unittest.TestCase):
|
||||||
@@ -155,7 +156,7 @@ class TestCompat(unittest.TestCase):
|
|||||||
|
|
||||||
def test_ensure_testcase_v4(self):
|
def test_ensure_testcase_v4(self):
|
||||||
testcase_content = {
|
testcase_content = {
|
||||||
"config": {"name": "xxx", "base_url": "https://httpbin.org"},
|
"config": {"name": "xxx", "base_url": HTTP_BIN_URL},
|
||||||
"teststeps": [
|
"teststeps": [
|
||||||
{
|
{
|
||||||
"name": "get with params",
|
"name": "get with params",
|
||||||
@@ -179,7 +180,7 @@ class TestCompat(unittest.TestCase):
|
|||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
compat.ensure_testcase_v4(testcase_content),
|
compat.ensure_testcase_v4(testcase_content),
|
||||||
{
|
{
|
||||||
"config": {"name": "xxx", "base_url": "https://httpbin.org"},
|
"config": {"name": "xxx", "base_url": HTTP_BIN_URL},
|
||||||
"teststeps": [
|
"teststeps": [
|
||||||
{
|
{
|
||||||
"name": "get with params",
|
"name": "get with params",
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ import sys
|
|||||||
from typing import Text
|
from typing import Text
|
||||||
|
|
||||||
from httprunner.models import VariablesMapping, FunctionsMapping, TStep
|
from httprunner.models import VariablesMapping, FunctionsMapping, TStep
|
||||||
from httprunner.parser import parse_data, parse_variables_mapping
|
from httprunner.parser import parse_data
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -138,7 +138,6 @@ def multipart_encoder(**kwargs):
|
|||||||
ensure_upload_ready()
|
ensure_upload_ready()
|
||||||
fields_dict = {}
|
fields_dict = {}
|
||||||
for key, value in kwargs.items():
|
for key, value in kwargs.items():
|
||||||
|
|
||||||
if os.path.isabs(value):
|
if os.path.isabs(value):
|
||||||
# value is absolute file path
|
# value is absolute file path
|
||||||
_file_path = value
|
_file_path = value
|
||||||
|
|||||||
@@ -4,12 +4,13 @@ import requests
|
|||||||
|
|
||||||
from httprunner.parser import Parser
|
from httprunner.parser import Parser
|
||||||
from httprunner.response import ResponseObject, uniform_validator
|
from httprunner.response import ResponseObject, uniform_validator
|
||||||
|
from httprunner.utils_test import HTTP_BIN_URL
|
||||||
|
|
||||||
|
|
||||||
class TestResponse(unittest.TestCase):
|
class TestResponse(unittest.TestCase):
|
||||||
def setUp(self) -> None:
|
def setUp(self) -> None:
|
||||||
resp = requests.post(
|
resp = requests.post(
|
||||||
"https://httpbin.org/anything",
|
f"{HTTP_BIN_URL}/anything",
|
||||||
json={
|
json={
|
||||||
"locations": [
|
"locations": [
|
||||||
{"name": "Seattle", "state": "WA"},
|
{"name": "Seattle", "state": "WA"},
|
||||||
|
|||||||
@@ -10,6 +10,9 @@ from httprunner import __version__, loader, utils
|
|||||||
from httprunner.utils import ExtendJSONEncoder, merge_variables, ga4_client
|
from httprunner.utils import ExtendJSONEncoder, merge_variables, ga4_client
|
||||||
|
|
||||||
|
|
||||||
|
HTTP_BIN_URL = "http://127.0.0.1:80"
|
||||||
|
|
||||||
|
|
||||||
class TestUtils(unittest.TestCase):
|
class TestUtils(unittest.TestCase):
|
||||||
def test_set_os_environ(self):
|
def test_set_os_environ(self):
|
||||||
self.assertNotIn("abc", os.environ)
|
self.assertNotIn("abc", os.environ)
|
||||||
@@ -121,10 +124,10 @@ class TestUtils(unittest.TestCase):
|
|||||||
|
|
||||||
def test_override_config_variables(self):
|
def test_override_config_variables(self):
|
||||||
step_variables = {"base_url": "$base_url", "foo1": "bar1"}
|
step_variables = {"base_url": "$base_url", "foo1": "bar1"}
|
||||||
config_variables = {"base_url": "https://httpbin.org", "foo1": "bar111"}
|
config_variables = {"base_url": HTTP_BIN_URL, "foo1": "bar111"}
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
merge_variables(step_variables, config_variables),
|
merge_variables(step_variables, config_variables),
|
||||||
{"base_url": "https://httpbin.org", "foo1": "bar1"},
|
{"base_url": HTTP_BIN_URL, "foo1": "bar1"},
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_cartesian_product_one(self):
|
def test_cartesian_product_one(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user