命令行:
pip install django-jeknins
pip install -e git+git://github.com/kmmbvnr/django-jenkins.git#egg=django-jenkins
pip install coverage
python manage.py jenkins --enable-coverage
配置:
django settings:
PROJECT_APPS = []
JENKINS_TASKS = ()
INSTALLED_APPS += [
'django_jenkins',
]
pipeline:
stage ("Generate Coverage Report") {
generate_coverage_report()
cobertura autoUpdateHealth: false, autoUpdateStability: false, coberturaReportFile: 'src/streamersite/reports/coverage.xml', conditionalCoverageTargets: '70, 0, 0', failNoReports: false, failUnhealthy: false, failUnstable: false, lineCoverageTargets: '80, 0, 0', maxNumberOfBuilds: 0, methodCoverageTargets: '80, 0, 0', onlyStable: false, sourceEncoding: 'ASCII', zoomCoverageChart: false
}
遇到的问题和解决办法:
1.Segmentation fault: 11 python manage.py jenkins --enable-coverage
场景:slave机器执行python manage.py jenkins --enable-coverage 报错
解决:render 的html中"©"符号,改成©
2.assertHTMLEqual(base_data, test_data, msg)
场景:base_data, test_data 入参为html文件报错
解决:读取html文件为str,作为入参进行比较
f1 = codecs.open(base_test_file, 'r', 'utf-8')
base_data = BeautifulSoup(f1.read(), "html.parser").get_text()
----->"html.parse"需要加,否则:
UserWarning: No parser was explicitly specified, so I'm using the best available HTML parser for this system ("lxml"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently.
3.assertRedirects(response, redirect, msg_prefix=msg)
场景:报错:redirect_response = response.client.get(path, QueryDict(query), secure=(scheme == 'https'))
AttributeError: 'HttpResponseRedirect' object has no attribute 'client'
解决:fetch_redirect_response=False
assertRedirects(redirect_result, "http://fusion360.autodesk.com/", msg_prefix=msg, fetch_redirect_response=False)