我正在编写python代码,应该使用python 2.7和3.3 +
运行我正试图找出一种正确检查http状态代码的方法,但不会降低我的测试覆盖率。
如果我写的话:
clbTables.DataSource = sqlDisplayContent.connectDataTable("SELECT ('Tafelnr: '+ CONVERT(varchar,tafelnr)+' Zitplaatsen: '+ CONVERT(varchar,zitPlaatsen)) AS dispValue,tafelnr FROM tabel");
clbTables.DisplayMember = "dispValue";
clbTables.ValueMember = "tafelnr";
class sqlDisplayContent
{
public static DataTable connectDataTable(string query)
{
SqlCommand comm= sqlCrud.returnSqlCommand(query);
SqlDataAdapter sda = new SqlDataAdapter(comm);
DataTable dt = new DataTable();
sda.Fill(dt);
return dt;
}
}
Thankss
保险范围永远不会是100%
所以我的问题是:有更好的方法吗?
答案 0 :(得分:0)
在定位多个版本的Python时,您很少能够实现100%的测试覆盖率。 Python 2解释器将遵循一个执行路径,Python 3解释器将遵循另一个执行路径,并且解释器都不会命中每行代码。最好的解决方案是按照Martijn提到的那样做并使用# pragma: no cover
。以下是我在其中一个项目中解决此问题的方法:
from sys import version_info
if version_info.major == 2: # pragma: no cover
from httplib import ACCEPTED, NO_CONTENT # pylint:disable=import-error
else: # pragma: no cover
from http.client import ACCEPTED, NO_CONTENT # pylint:disable=import-error
上述解决方案将满足coverage,flake8和pylint:
# pragma: no cover
个注释会阻止覆盖范围对该行或下一个块中的任何内容进行计数。# pylint:
条评论的目的与此类似。我从SatelliteQE/nailgun nailgun/entities.py
提取了上述代码。