@rushabh_mehta, all: just to further clarify, the above-mentioned error is observed on our internal development server where we currently have the configuration as follows
-
ERPNext: v6.27.22
-
Frappe Framework: v6.27.21
Actually, we observe two problems at the same time:
- lack of run-tests command in the list of supported bench commands in bench command output (we assumed to see it, based on the considerations in https://frappe.github.io/frappe/user/en/guides/basics/writing-tests.html)
- error when trying to run the command, bench run-tests (per the instructions in https://frappe.github.io/frappe/user/en/guides/basics/writing-tests.html)
The specific STR for the first problem is provided by Katerina above.
The specific STR for the second problem we face is as follows
- we connect to our server, using ssh
- we navigate to the folder ~/frappe-bench/apps/erpnext there
- we type the command in the prompt as follows: bench run-tests
Expected behavior: we could expect to see a result of test search/execution or a graceful message about no tests found in the application folder.
The actual behavior is quite different - we see the wall of text in the error stack trace (see P.S. below). This stack trace does not help to understand the root cause of our problem, unfortunately. Could you please help to resolve this issue?
Our current goal is to try frappe unit tests on ERP Next and then see the way to adapt it to our every-day development practices.
Thank you.
George
P.S. below is the stack trace. Any thoughts?
ubuntu@ip-yyy-yyy-yyy-yyy:~/frappe-bench/apps/erpnext$ bench run-tests
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/utils/bench_helper.py", line 79, in <module>
main()
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/utils/bench_helper.py", line 16, in main
click.Group(commands=commands)(prog_name='bench')
File "/home/ubuntu/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py", line 716, in __call__
return self.main(*args, **kwargs)
File "/home/ubuntu/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py", line 696, in main
rv = self.invoke(ctx)
File "/home/ubuntu/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py", line 1060, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/ubuntu/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py", line 1060, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/ubuntu/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py", line 889, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/ubuntu/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py", line 534, in invoke
return callback(*args, **kwargs)
File "/home/ubuntu/frappe-bench/env/local/lib/python2.7/site-packages/click/decorators.py", line 17, in new_func
return f(get_current_context(), *args, **kwargs)
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/commands/__init__.py", line 24, in _func
ret = f(frappe._dict(ctx.obj), *args, **kwargs)
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/commands/utils.py", line 302, in run_tests
force=context.force, profile=profile)
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/test_runner.py", line 39, in main
ret = run_all_tests(app, verbose, profile)
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/test_runner.py", line 74, in run_all_tests
_add_test(app, path, filename, verbose, test_suite=test_suite)
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/test_runner.py", line 164, in _add_test
make_test_records(doctype, verbose)
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/test_runner.py", line 180, in make_test_records
make_test_records(options, verbose, force)
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/test_runner.py", line 180, in make_test_records
make_test_records(options, verbose, force)
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/test_runner.py", line 180, in make_test_records
make_test_records(options, verbose, force)
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/test_runner.py", line 181, in make_test_records
make_test_records_for_doctype(options, verbose, force)
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/test_runner.py", line 226, in make_test_records_for_doctype
frappe.local.test_objects[doctype] += make_test_objects(doctype, test_module.test_records, verbose)
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/test_runner.py", line 273, in make_test_objects
d.insert()
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/model/document.py", line 212, in insert
self.run_before_save_methods()
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/model/document.py", line 687, in run_before_save_methods
self.run_method("validate")
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/model/document.py", line 638, in run_method
return Document.hook(fn)(self, *args, **kwargs)
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/model/document.py", line 816, in composer
return composed(self, method, *args, **kwargs)
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/model/document.py", line 799, in runner
add_to_return_value(self, fn(self, *args, **kwargs))
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/model/document.py", line 632, in <lambda>
fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
File "/home/ubuntu/frappe-bench/apps/erpnext/erpnext/stock/doctype/item/item.py", line 65, in validate
super(Item, self).validate()
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/website/website_generator.py", line 35, in validate
self.route = self.make_route()
File "/home/ubuntu/frappe-bench/apps/erpnext/erpnext/stock/doctype/item/item.py", line 144, in make_route
return frappe.db.get_value('Item Group', self.item_group, 'route') + '/' + self.scrub(self.item_name)
TypeError: unsupported operand type(s) for +: 'NoneType' and 'unicode'