复制功能的单元测试

时间:2015-08-15 00:03:21

标签: c++ unit-testing

我有一个名为import numpy as np import matplotlib.pyplot as plt import pymc #Generating some data for the model_difference y = m * x + n m_true, n_true = 3, 2 sigma_true = 2 x_true = 25 * (np.random.random(50) - 0.5) y_true = m_true * x_true + n_true #Adding some scatter x_data, y_data = x_true, y_true x_data, y_data = np.random.normal(x_true, 2), np.random.normal(y_true, 2) #Providiing estimates for priors Np_lsf = np.polyfit(x_data, y_data, 1) m_0, n_0 = Np_lsf[0], Np_lsf[1] #Priors m_coef = pymc.Normal('m_coef', m_0, 0.01) n_coef = pymc.Normal('n_coef', n_0, 0.01) sigma = pymc.Uniform('sigma', 0.0, 5.0) #---Chi Square Moodel @pymc.stochastic(observed=True, trace=True) def model(value = y_data, x_values = x_data, m = m_coef, n = n_coef, sigma = sigma): value_theo = m*x_values + n chi_sq = np.sum( np.square(value - value_theo) / np.square(sigma)) log_ChiSq = - chi_sq / 2.0 return log_ChiSq MCMC_dict2 = dict(m_coef=m_coef, n_coef=n_coef, sigma=sigma, model=model) M = pymc.MCMC(MCMC_dict2) M.sample(iter=10000, burn=100) #Code variables print M.variables #MCMC ouput print '\nInitial m, n, estimations' print m_0, n_0 print 'Bayesian estimation Model 2' print M.m_coef.value, M.n_coef.value, 'with Sigma:', M.sigma.value #Store pymc_tracers MCMC_Traces = [M.trace('m_coef')[:], M.trace('n_coef')[:], M.trace('sigma')[:], M.trace('model')[:]] # #Plotting regression Fig = plt.figure(figsize = (16, 9)) Axis1 = Fig.add_subplot(111) Fig.set_facecolor('w') Axis1.plot(x_data, y_data, 'ok') Axis1.plot(x_data, m_0 * x_data + n_0, '-', color='blue', label = 'least-squares fit') Axis1.plot(x_data, M.m_coef.value * x_data + M.n_coef.value, '-', color='red', label = r'$\chi^{-2}$ model') Axis1.plot(x_data, m_true * x_data + n_true, '-', color='black', label = r'true data model, $\sigma=$'+str(sigma_true)) Axis1.xlabel('x') Axis1.ylabel('y') Axis1.legend(loc='best') plt.show() 的c ++函数,它只是将src文件复制到目标。现在我需要为这个函数编写一个单元测试。因为我从未写过单元测试,所以我不确定它应该包括什么。

我的意思是在我的copyMyFile(string src, string dest)单元测试方法中,我只能使用某些参数调用test_copyMyFiles()方法吗?或者我应该做一些其他工作人员才能完成单元测试?

1 个答案:

答案 0 :(得分:3)

将评论转移回答,因为它们似乎有用处。

担心的情况包括:空文件名;两次相同的文件名;文件名无效。要检查的事项:文件副本与原件相同;当副本没有足够的磁盘空间时会发生什么;错误报告;如果目标是目录而不是文件名,会发生什么。

  

为了调用copyMyFile,我首先需要一些文件,所以我想在test_copyMyFiles()方法中我需要先创建一个文件。如果我还有一个函数createMyFile(),我可以在单元测试中使用它吗?或者在单元测试另一个用户定义的模块时使用一个用户定义的模块不是一个好主意吗?

粗略地说,如果您已经对文件创建代码进行了单元测试,那么在测试文件复制代码时应该可以使用它(假设它已通过)。不太好的是对文件复制代码进行单元测试,并发现创建代码的文件实际上存在错误 - 这会导致混淆。因此,通过一切手段编写使用受信任(测试)代码的单元测试,但不要使用不受信任(未经测试)的代码。这意味着你必须建立一个依赖列表,你不能在依赖列表中提供周期。