1, remove PyUnitReport dependency;
2, add built-in html report;
3, support pass in html report template, in Jinja2 format.
This commit is contained in:
debugtalk
2018-02-25 23:09:12 +08:00
parent 6557cb3420
commit 160218b1ed
11 changed files with 363 additions and 109 deletions

View File

@@ -1,35 +0,0 @@
import os
import shutil
import sys
from httprunner.task import TaskSuite
from pyunitreport import HTMLTestRunner
from tests.base import ApiServerUnittest
class TestCli(ApiServerUnittest):
def setUp(self):
testset_path = "tests/data/demo_testset_cli.yml"
output_folder_name = os.path.basename(os.path.splitext(testset_path)[0])
self.kwargs = {
"output": output_folder_name
}
self.task_suite = TaskSuite(testset_path)
self.report_save_dir = os.path.join(os.getcwd(), 'reports', output_folder_name)
self.reset_all()
def reset_all(self):
url = "%s/api/reset-all" % self.host
headers = self.get_authenticated_headers()
return self.api_client.get(url, headers=headers)
def test_run_times(self):
result = HTMLTestRunner(**self.kwargs).run(self.task_suite)
self.assertEqual(result.testsRun, 10)
shutil.rmtree(self.report_save_dir)
def test_skip(self):
result = HTMLTestRunner(**self.kwargs).run(self.task_suite)
self.assertEqual(len(result.skipped), 4)
shutil.rmtree(self.report_save_dir)

46
tests/test_httprunner.py Normal file
View File

@@ -0,0 +1,46 @@
import os
import shutil
from httprunner import HttpRunner
from tests.base import ApiServerUnittest
class TestHttpRunner(ApiServerUnittest):
def setUp(self):
self.testset_path = "tests/data/demo_testset_cli.yml"
self.reset_all()
def reset_all(self):
url = "%s/api/reset-all" % self.host
headers = self.get_authenticated_headers()
return self.api_client.get(url, headers=headers)
def test_text_run_times(self):
kwargs = {
"gen_html_report": False
}
result = HttpRunner(self.testset_path, **kwargs).run()
self.assertEqual(result["stat"]["testsRun"], 10)
def test_text_skip(self):
kwargs = {
"gen_html_report": False
}
result = HttpRunner(self.testset_path, **kwargs).run()
self.assertEqual(result["stat"]["skipped"], 4)
def test_html_report(self):
kwargs = {
"gen_html_report": True
}
output_folder_name = os.path.basename(os.path.splitext(self.testset_path)[0])
run_kwargs = {
"html_report_name": output_folder_name
}
result = HttpRunner(self.testset_path).run(**run_kwargs)
self.assertEqual(result["stat"]["testsRun"], 10)
self.assertEqual(result["stat"]["skipped"], 4)
report_save_dir = os.path.join(os.getcwd(), 'reports', output_folder_name)
shutil.rmtree(report_save_dir)

View File

@@ -78,50 +78,50 @@ class TestRunner(ApiServerUnittest):
def test_run_testset_hardcode(self):
for testcase_file_path in self.testcase_file_path_list:
result = HttpRunner(testcase_file_path).run()
self.assertTrue(result.success)
self.assertTrue(result["success"])
def test_run_testsets_hardcode(self):
result = HttpRunner(self.testcase_file_path_list).run()
self.assertTrue(result.success)
self.assertEqual(result.stat.total, 6)
self.assertEqual(result.stat.successes, 6)
self.assertTrue(result["success"])
self.assertEqual(result["stat"]["testsRun"], 6)
self.assertEqual(result["stat"]["successes"], 6)
def test_run_testset_template_variables(self):
testcase_file_path = os.path.join(
os.getcwd(), 'tests/data/demo_testset_variables.yml')
result = HttpRunner(testcase_file_path).run()
self.assertTrue(result.success)
self.assertTrue(result["success"])
def test_run_testset_template_import_functions(self):
testcase_file_path = os.path.join(
os.getcwd(), 'tests/data/demo_testset_template_import_functions.yml')
result = HttpRunner(testcase_file_path).run()
self.assertTrue(result.success)
self.assertTrue(result["success"])
def test_run_testsets_template_import_functions(self):
testcase_file_path = os.path.join(
os.getcwd(), 'tests/data/demo_testset_template_import_functions.yml')
result = HttpRunner(testcase_file_path).run()
self.assertTrue(result.success)
self.assertTrue(result["success"])
def test_run_testsets_template_lambda_functions(self):
testcase_file_path = os.path.join(
os.getcwd(), 'tests/data/demo_testset_template_lambda_functions.yml')
result = HttpRunner(testcase_file_path).run()
self.assertTrue(result.success)
self.assertTrue(result["success"])
def test_run_testset_layered(self):
testcase_file_path = os.path.join(
os.getcwd(), 'tests/data/demo_testset_layer.yml')
result = HttpRunner(testcase_file_path).run()
self.assertTrue(result.success)
self.assertTrue(result["success"])
def test_run_testset_output(self):
testcase_file_path = os.path.join(
os.getcwd(), 'tests/data/demo_testset_layer.yml')
result = HttpRunner(testcase_file_path).run()
self.assertTrue(result.success)
self.assertIn("token", result.output)
self.assertTrue(result["success"])
self.assertIn("token", result["output"])
def test_run_testset_with_variables_mapping(self):
testcase_file_path = os.path.join(
@@ -129,9 +129,9 @@ class TestRunner(ApiServerUnittest):
variables_mapping = {
"app_version": '2.9.7'
}
result = HttpRunner(testcase_file_path).run(variables_mapping)
self.assertTrue(result.success)
self.assertIn("token", result.output)
result = HttpRunner(testcase_file_path).run(mapping=variables_mapping)
self.assertTrue(result["success"])
self.assertIn("token", result["output"])
def test_run_testcase_with_empty_header(self):
testcase_file_path = os.path.join(
@@ -162,6 +162,6 @@ class TestRunner(ApiServerUnittest):
testcase_file_path = os.path.join(
os.getcwd(), 'tests/data/demo_parameters.yml')
result = HttpRunner(testcase_file_path).run()
self.assertTrue(result.success)
self.assertIn("token", result.output)
self.assertEqual(result.stat.total, 6)
self.assertTrue(result["success"])
self.assertIn("token", result["output"])
self.assertEqual(result["stat"]["testsRun"], 6)