testing - 在没有服务器的情况下运行 cgi 程序

标签 testing cgi

是否有一个工具可以给出一个cgi程序,参数(查询字符串、方法、要上传的文件等)会设置正确的环境变量,并执行这个程序(用或没有调试器。

像这样的东西 perl脚本,只是更扎实,输出和输入更清晰,支持文件等。

最佳答案

嗯,一个新的开源项目从这个问题中诞生了。我正在从 here 复制我的答案.

如果你只是想看看你的 CGI 运行,你可以使用我的小 runCGI项目。

你只需要设置一个看起来像这样的yaml文件

_exec: /var/cgi-bin/myfile.cgi
method: GET
query_string:
  q: s

然后运行

./runCGI myyamlfile.yaml

您将在控制台的标准输出中看到输出。

你甚至可以用gdb调试它,调试runCGI gdb runCGI,用正确的参数运行(run someyaml.yaml),issue tcatch exec(tcatch 只捕获一次)然后在你的 CGI 文件中设置断点:

$ g++ a.cc -o a.out
$ cat a.yaml
method: GET
_exec: a.out
$ gdb runCGI
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu"...
(gdb) tcatch exec
Catchpoint 1 (exec)
(gdb) run a.yaml
Starting program: /home/elazar/runCGI/runCGI a.yaml
Executing new program: /home/elazar/runCGI/a.out
0x00007fc3a24a6a60 in ?? () from /lib64/ld-linux-x86-64.so.2
(gdb) tbreak main
Breakpoint 2 at 0x400577: file a.cc, line 2.
(gdb) c
Continuing.
main (argc=1, argv=0x7fff14891408) at a.cc:2
2       int a =0;
(gdb)

关于testing - 在没有服务器的情况下运行 cgi 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5529437/

相关文章:

testing - 在 TestCafe 中访问剪贴板

python - 确定测试是单元测试还是集成测试

perl - 如何从 Perl CGI 应用程序安排一次性任务?

apache - 正在下载 CGI 文件,而不是在 nagios Web 界面中执行

testing - 如何在同一个 Eclipse/CDT 项目中构建库和测试可执行文件?

node.js - 处理磁带测试中的错误?

java - 在 AndroidTestCase 中调用 MockitoAnnotations.initMocks() 时的 NPE

mysql - 无法使用 DBI 将记录插入 MySQL 数据库

perl - CGI/Perl "use"函数

python - 使用 Python 发送和解析 HTTP POST 请求