change: update scaffold for v3

This commit is contained in:
debugtalk
2020-05-17 12:15:51 +08:00
parent b3f478f63c
commit 4228e6c2b0
2 changed files with 72 additions and 54 deletions

View File

@@ -37,71 +37,83 @@ def create_scaffold(project_name):
msg = f"created file: {path}" msg = f"created file: {path}"
logger.info(msg) logger.info(msg)
demo_api_content = """ demo_testcase_request_content = """
name: demo api
variables:
var1: value1
var2: value2
request:
url: /api/path/$var1
method: POST
headers:
Content-Type: "application/json"
json:
key: $var2
validate:
- eq: ["status_code", 200]
"""
demo_testcase_content = """
config: config:
name: "demo testcase" name: "request methods testcase with functions"
variables: variables:
device_sn: "ABC" foo1: session_bar1
username: ${ENV(USERNAME)} base_url: "https://postman-echo.com"
password: ${ENV(PASSWORD)} verify: False
base_url: "http://127.0.0.1:5000"
teststeps: teststeps:
- -
name: demo step 1 name: get with params
api: path/to/api1.yml
variables: variables:
user_agent: 'iOS/10.3' foo1: bar1
device_sn: $device_sn foo2: session_bar2
sum_v: "${sum_two(1, 2)}"
request:
method: GET
url: /get
params:
foo1: $foo1
foo2: $foo2
sum_v: $sum_v
headers:
User-Agent: HttpRunner/${get_httprunner_version()}
extract: extract:
token: content.token session_foo2: "body.args.foo2"
validate: validate:
- eq: ["status_code", 200] - eq: ["status_code", 200]
- eq: ["body.args.foo1", "session_bar1"]
- eq: ["body.args.sum_v", 3]
- eq: ["body.args.foo2", "session_bar2"]
- -
name: demo step 2 name: post raw text
api: path/to/api2.yml
variables: variables:
token: $token foo1: "hello world"
foo3: "$session_foo2"
request:
method: POST
url: /post
headers:
User-Agent: HttpRunner/${get_httprunner_version()}
Content-Type: "text/plain"
data: "This is expected to be sent back as part of response body: $foo1-$foo3."
validate:
- eq: ["status_code", 200]
- eq: ["body.data", "This is expected to be sent back as part of response body: session_bar1-session_bar2."]
""" """
demo_testsuite_content = """ demo_testcase_with_ref_content = """
config: config:
name: "demo testsuite" name: "request methods testcase: reference testcase"
variables: variables:
device_sn: "XYZ" foo1: session_bar1
base_url: "http://127.0.0.1:5000" base_url: "https://postman-echo.com"
verify: False
testcases: teststeps:
- -
name: call demo_testcase with data 1 name: request with referenced testcase
testcase: path/to/demo_testcase.yml
variables: variables:
device_sn: $device_sn foo1: override_bar1
- testcase: testcases/demo_testcase_request.yml
name: call demo_testcase with data 2
testcase: path/to/demo_testcase.yml
variables:
device_sn: $device_sn
""" """
ignore_content = "\n".join( ignore_content = "\n".join(
[".env", "reports/*", "__pycache__/*", "*.pyc", ".python-version", "logs/*"] [".env", "reports/*", "__pycache__/*", "*.pyc", ".python-version", "logs/*"]
) )
demo_debugtalk_content = """ demo_debugtalk_content = """import time
import time
from httprunner import __version__
def get_httprunner_version():
return __version__
def sum_two(m, n):
return m + n
def sleep(n_secs): def sleep(n_secs):
time.sleep(n_secs) time.sleep(n_secs)
@@ -109,18 +121,17 @@ def sleep(n_secs):
demo_env_content = "\n".join(["USERNAME=leolee", "PASSWORD=123456"]) demo_env_content = "\n".join(["USERNAME=leolee", "PASSWORD=123456"])
create_folder(project_name) create_folder(project_name)
create_folder(os.path.join(project_name, "api")) create_folder(os.path.join(project_name, "har"))
create_folder(os.path.join(project_name, "testcases")) create_folder(os.path.join(project_name, "testcases"))
create_folder(os.path.join(project_name, "testsuites"))
create_folder(os.path.join(project_name, "reports")) create_folder(os.path.join(project_name, "reports"))
create_file(os.path.join(project_name, "api", "demo_api.yml"), demo_api_content)
create_file( create_file(
os.path.join(project_name, "testcases", "demo_testcase.yml"), os.path.join(project_name, "testcases", "demo_testcase_request.yml"),
demo_testcase_content, demo_testcase_request_content,
) )
create_file( create_file(
os.path.join(project_name, "testsuites", "demo_testsuite.yml"), os.path.join(project_name, "testcases", "demo_testcase_ref.yml"),
demo_testsuite_content, demo_testcase_with_ref_content,
) )
create_file(os.path.join(project_name, "debugtalk.py"), demo_debugtalk_content) create_file(os.path.join(project_name, "debugtalk.py"), demo_debugtalk_content)
create_file(os.path.join(project_name, ".env"), demo_env_content) create_file(os.path.join(project_name, ".env"), demo_env_content)

View File

@@ -1,5 +1,6 @@
import os import os
import shutil import shutil
import subprocess
import unittest import unittest
from httprunner.ext.scaffold import create_scaffold from httprunner.ext.scaffold import create_scaffold
@@ -9,10 +10,16 @@ class TestUtils(unittest.TestCase):
def test_create_scaffold(self): def test_create_scaffold(self):
project_name = "projectABC" project_name = "projectABC"
create_scaffold(project_name) create_scaffold(project_name)
self.assertTrue(os.path.isdir(os.path.join(project_name, "api"))) self.assertTrue(os.path.isdir(os.path.join(project_name, "har")))
self.assertTrue(os.path.isdir(os.path.join(project_name, "testcases"))) self.assertTrue(os.path.isdir(os.path.join(project_name, "testcases")))
self.assertTrue(os.path.isdir(os.path.join(project_name, "testsuites")))
self.assertTrue(os.path.isdir(os.path.join(project_name, "reports"))) self.assertTrue(os.path.isdir(os.path.join(project_name, "reports")))
self.assertTrue(os.path.isfile(os.path.join(project_name, "debugtalk.py"))) self.assertTrue(os.path.isfile(os.path.join(project_name, "debugtalk.py")))
self.assertTrue(os.path.isfile(os.path.join(project_name, ".env"))) self.assertTrue(os.path.isfile(os.path.join(project_name, ".env")))
shutil.rmtree(project_name)
# run demo testcases
try:
subprocess.check_call(["hrun", project_name])
except subprocess.SubprocessError:
raise
finally:
shutil.rmtree(project_name)