使用请求测试Flask应用程序

时间:2015-12-27 21:25:44

标签: python flask python-requests

自从我读完

  

未经测试的应用程序已损坏

关于测试here

的烧瓶文档中的

我一直在编制我的一些应用程序列表。

当我写一条新路线时,我现在有一个烧瓶网络应用程序,我只是写一个import java.awt.*; import java.awt.event.*; import java.sql.Connection; import java.util.*; import javax.swing.*; import net.sf.jasperreports.engine.*; import net.sf.jasperreports.engine.design.JasperDesign; import net.sf.jasperreports.engine.xml.JRXmlLoader; import net.sf.jasperreports.view.JRViewer; public class JasperReportInterface extends JFrame { private static final long serialVersionUID = 5430239481089683268L; private JComboBox<MonthItem> selectMonts; public JasperReportInterface() { super("Jasper Report Interface"); jbInit(); } private void jbInit() { this.getContentPane().setLayout(new GridBagLayout()); selectMonts = new JComboBox<MonthItem>(); selectMonts.addItem(new MonthItem(3)); selectMonts.addItem(new MonthItem(6)); this.getContentPane().add(new JLabel("Select month:"), new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2, 2, 2, 2), 0, 0)); this.getContentPane().add(selectMonts, new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(2, 2, 2, 2), 0, 0)); JButton btnReport = new JButton("Generate report"); btnReport.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { btnReport_actionPerformed(e); } }); this.getContentPane().add(btnReport,new GridBagConstraints(0, 1, 2, 1, 1.0, 1.0, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(2, 2, 2, 2), 0, 0)); } protected void btnReport_actionPerformed(ActionEvent e) { String jasperFilePath = "jasper/myJasperFile.jrxml"; Map<String, Object> parameters = new HashMap<String, Object>(); Object v = selectMonts.getSelectedItem(); if (v instanceof MonthItem) { parameters.put("parameter1", ((MonthItem) v).getMonth()); } Connection conn = null; // Pass the connection to database or datasource JasperPrint report; try { JasperDesign jasperDesign = JRXmlLoader.load(jasperFilePath); JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign); report = JasperFillManager.fillReport(jasperReport, parameters, conn); } catch (JRException e1) { e1.printStackTrace(); JOptionPane.showMessageDialog(this, "Error creating report: " + e1.getMessage()); return; } JRViewer jrv = new JRViewer(report); JDialog viewer = new JDialog(this); viewer.setTitle("Print preview"); viewer.getContentPane().add(jrv); viewer.pack(); viewer.setSize(new Dimension(840, 600)); viewer.setLocationRelativeTo(null); viewer.setVisible(true); } class MonthItem { private int month; protected MonthItem(int month) { this.month = month; } public String toString() { return month + " months"; } public int getMonth() { return month; } } public static void main(String[] args) { JasperReportInterface ri = new JasperReportInterface(); ri.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ri.setSize(400,100); ri.setLocationRelativeTo(null); ri.setVisible(true); } } ,post,put等来测试路线。

这是一个不错的选择吗?或者我应该尝试通过flask's documentation所说的进行测试,如果是,为什么?

1 个答案:

答案 0 :(得分:0)

从根本上说,它是相同的概念,您正在运行功能测试。但是,你有一个先决条件,一个在某个地方运行的实时应用程序(如果我做对了)。他们创建了一个虚假的应用程序(也就是模拟),因此您可以在不实时的情况下对其进您希望在CI环境中运行测试。

在我看来,它比现场系统更好。您当前的方法在本地计算机上消耗更多资源,因为您需要运行整个系统来测试某些内容(即至少是数据库和应用程序本身)。在他们的方法中他们没有,假实例不需要有真实数据,因此没有连接到数据库或任何其他外部依赖。

我建议你切换到他们的测试,最后你会喜欢它。