我有一系列集成级别的测试,它们在我的 Django 项目中作为管理命令运行。这些测试正在验证从外部来源提取到我的数据库中的大量天气数据的完整性。因为我有如此大量的数据,我真的必须针对我的生产数据库进行测试才能使测试有意义。我想弄清楚的是如何定义特定于该命令或连接对象的只读数据库连接。我还应该补充一点,这些测试无法通过 ORM,因此我需要执行原始 SQL。
我的测试结构如下所示
class Command(BaseCommand):
help = 'Runs Integration Tests and Query Tests against Prod Database'
def handle(self,*args, **options):
suite = unittest.TestLoader().loadTestsFromTestCase(TestWeatherModel)
ret = unittest.TextTestRunner().run(suite)
if(len(ret.failures) != 0):
sys.exit(1)
else:
sys.exit(0)
class TestWeatherModel(unittest.TestCase):
def testCollectWeatherDataHist(self):
wm = WeatherManager()
wm.CollectWeatherData()
self.assertTrue(wm.weatherData is not None)
Run Code Online (Sandbox Code Playgroud)
WeatherManager.CollectWeatherData() 方法如下所示:
def CollecWeatherData(self):
cur = connection.cursor()
cur.execute(<Raw SQL Query>)
wm.WeatherData = cur.fetchall()
cur.close()
Run Code Online (Sandbox Code Playgroud)
我想以某种方式对此进行白痴证明,以便其他人(或我)以后不能出现并意外编写会修改生产数据库的测试。
python django django-testing django-database django-postgresql
我正在使用 QT Creator 来处理一个 C++ 中型项目。
项目结构基本上是这样的
项目
测试
这些库由测试项目中的可执行文件进行测试。我已经设法在启用 gcov 的情况下自行编译测试,并使用 lcov 生成代码覆盖率报告,但他们显示的覆盖率只是测试用例,而不是我正在测试的实际代码。我也尝试使用 gcov 编译静态库,但是当我对这些库运行测试时,它不会生成任何 gcov 输出文件。
如何通过将我的项目库与测试链接来生成 gcov 输出文件?我想看看我的单元测试是否存在任何差距。
我正在使用JDBC通过Matlab访问postgresql数据库,并且在尝试插入我希望存储为数组而不是单个值的值数组时已经挂起.我正在使用的Matlab代码如下:
insertCommand = 'INSERT INTO neuron (classifier_id, threshold, weights, neuron_num) VALUES (?,?,?,?)';
statementObject = dbhandle.prepareStatement(insertCommand);
statementObject.setObject(1,1);
statementObject.setObject(2,output_thresholds(1));
statementObject.setArray(3,dbHandle.createArrayOf('"float8"',outputnodes(1,:)));
statementObject.setObject(4,1);
statementObject.execute;
close(statementObject);
Run Code Online (Sandbox Code Playgroud)
除了处理数组的行之外,一切都正常运行.对象outputnodes是一个<5x23>双矩阵,所以我试图将第一个<1x23>放入我的表中.
我已经为'"float8"'createArrayof调用的部分尝试了几种不同的名称和引号组合,但我总是得到这个错误:
??? Java exception occurred:
org.postgresql.util.PSQLException: Unable to find server array type for provided name "float8".
at org.postgresql.jdbc4.AbstractJdbc4Connection.createArrayOf(AbstractJdbc4Connection.java:82)
at org.postgresql.jdbc4.Jdbc4Connection.createArrayOf(Jdbc4Connection.java:19)
Error in ==> Databasetest at 22
statementObject.setArray(3,dbHandle.createArrayOf('"float8"',outputnodes(1,:)));
Run Code Online (Sandbox Code Playgroud)