0

我已将测试计划、案例从 testopia 环境迁移到 kiwi tcms。大多数计划和案例都可以。但是在某些测试计划中查看测试用例时,在 /case/57286/ 处出现错误 AttributeError。这可能是什么原因?

以下是错误的堆栈跟踪..

请求方式:POST 请求网址:http://*******:8000/plans/printable/

Django 版本:2.1.3 Python 版本:3.6.1 已安装的应用程序:

['vinaigrette',
 'grappelli',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.messages',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.staticfiles',
 'attachments',
 'django_comments',
 'modernrpc',
 'simple_history',
 'tcms.core',
 'tcms.kiwi_auth',
 'tcms.core.contrib.comments.apps.AppConfig',
 'tcms.core.contrib.linkreference',
 'tcms.management',
 'tcms.testcases.apps.AppConfig',
 'tcms.testplans.apps.AppConfig',
 'tcms.testruns.apps.AppConfig',
 'tcms.xmlrpc',
 'debug_toolbar',
 'django_extensions']
Installed Middleware:
['django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.locale.LocaleMiddleware',
 'django.middleware.common.CommonMiddleware',
 'tcms.core.middleware.CsrfDisableMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'global_login_required.GlobalLoginRequiredMiddleware',
 'simple_history.middleware.HistoryRequestMiddleware',
 'tcms.core.middleware.CheckSettingsMiddleware',
 'debug_toolbar.middleware.DebugToolbarMiddleware']



Template error:
In template /hms/apps/Kiwi/tcms/templates/case/printable.html, error at line 57
   'NoneType' object has no attribute 'strip'
   47 :     <div>
   48 :         <h2 id="plan_cases">Test Cases</h2>
   49 :         <div class="thick-line"></div>
   50 :     {% for case_id, test_cases in test_cases.items %}
   51 :         <div style="clear: left">
   52 :             {% for test_case in test_cases %}
   53 :         <h3>TC-{{ test_case.case_id }}: {{ test_case.case__summary }}</h3>
   54 :         <div class="thin-line"></div>
   55 :         <div class="case-stage">
   56 :             <h4>Set up</h4>
   57 :              {{ test_case.setup|markdown2html }} 
   58 :         </div>
   59 :         <div class="case-stage">
   60 :             <h4>Actions</h4>
   61 :             {{ test_case.action|markdown2html }}
   62 :         </div>
   63 :         <div class="case-stage">
   64 :             <h4>Expected Results</h4>
   65 :             {{ test_case.effect|markdown2html }}
   66 :         </div>
   67 :         <div class="case-stage">


Traceback:

File "/home/centos/testenv/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner
  34.             response = get_response(request)

File "/home/centos/testenv/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  126.                 response = self.process_exception_by_middleware(e, request)

File "/home/centos/testenv/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  124.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/home/centos/testenv/lib/python3.6/site-packages/django/views/decorators/http.py" in inner
  40.             return func(request, *args, **kwargs)

File "/hms/apps/Kiwi/tcms/testplans/views.py" in printable
  650.     return testcases_printable(request)

File "/home/centos/testenv/lib/python3.6/site-packages/django/views/decorators/http.py" in inner
  40.             return func(request, *args, **kwargs)

File "/hms/apps/Kiwi/tcms/testcases/views.py" in printable
  882.     return render(request, template_name, context_data)

File "/home/centos/testenv/lib/python3.6/site-packages/django/shortcuts.py" in render
  36.     content = loader.render_to_string(template_name, context, request, using=using)

File "/home/centos/testenv/lib/python3.6/site-packages/django/template/loader.py" in render_to_string
  62.     return template.render(context, request)

File "/home/centos/testenv/lib/python3.6/site-packages/django/template/backends/django.py" in render
  61.             return self.template.render(context)

File "/home/centos/testenv/lib/python3.6/site-packages/django/template/base.py" in render
  171.                     return self._render(context)

File "/home/centos/testenv/lib/python3.6/site-packages/django/test/utils.py" in instrumented_test_render
  96.     return self.nodelist.render(context)

File "/home/centos/testenv/lib/python3.6/site-packages/django/template/base.py" in render
  937.                 bit = node.render_annotated(context)

File "/home/centos/testenv/lib/python3.6/site-packages/django/template/base.py" in render_annotated
  904.             return self.render(context)

File "/home/centos/testenv/lib/python3.6/site-packages/django/template/defaulttags.py" in render
  209.                     nodelist.append(node.render_annotated(context))

File "/home/centos/testenv/lib/python3.6/site-packages/django/template/base.py" in render_annotated
  904.             return self.render(context)

File "/home/centos/testenv/lib/python3.6/site-packages/django/template/defaulttags.py" in render
  209.                     nodelist.append(node.render_annotated(context))

File "/home/centos/testenv/lib/python3.6/site-packages/django/template/base.py" in render_annotated
  904.             return self.render(context)

File "/home/centos/testenv/lib/python3.6/site-packages/django/template/base.py" in render
  987.             output = self.filter_expression.resolve(context)

File "/home/centos/testenv/lib/python3.6/site-packages/django/template/base.py" in resolve
  698.                 new_obj = func(obj, *arg_vals)

File "/hms/apps/Kiwi/tcms/core/templatetags/extra_filters.py" in markdown2html
  20.                                        extensions=['markdown.extensions.fenced_code']))

File "/home/centos/testenv/lib/python3.6/site-packages/markdown/core.py" in markdown
  391.     return md.convert(text)

File "/home/centos/testenv/lib/python3.6/site-packages/markdown/core.py" in convert
  252.         if not source.strip():

Exception Type: AttributeError at /plans/printable/
Exception Value: 'NoneType' object has no attribute 'strip'

谢谢你

4

1 回答 1

1

您的某些文本的值为 None 而不是空字符串,并且渲染失败。尝试添加

if md_str is None: md_str = ''

作为tcms/core/templatetags/extra_filters.py::markdown2html()函数中的第一个操作,看看它是否解决了问题。如果是,我们可以在下一版本的 Kiwi TCMS 中包含这个补丁。

于 2018-12-10T09:30:38.043 回答