如何使用 Elixir 测试 Web 服务?
How to test Web Services with Elixir?
我们有几个 REST API 需要测试。 API 归其他团队所有。目前,我们使用 Node.js 和 Ava 来测试我们的 APIs.
我们最近开始探索 Elixir 作为我们的脚本语言。我们想尝试使用 Elixir 来测试 REST API。这里的问题是 - 如何使用 Elixir 测试外部网络 services/REST API?
围绕 Elixir 测试的每个 Google 搜索都指回 ExUnit,它基本上用于 Elixir 应用程序的单元测试。我们没有任何用 Elixir 或 Phoenix 编写的应用程序。
我们要做的就是端到端测试 API。如何使用 Elixir 做到这一点?使用哪些库?我知道我可以从我用 ExUnit 编写的测试中进行网络调用并验证 API 行为,但不确定它是否是正确的方法。
注意:我们已经将 JMeter 用于 API 的负载测试,但由于 API 涉及复杂的工作流,我们希望将功能测试与负载测试分开。
我认为你在答案中描述的是正确的方法。
您可以使用 ExUnit 作为测试 运行 和报告框架。在 ExUnit 中,你可以做任何你想做的事,进行网络调用,甚至解析 DOM。要测试 REST API,您可以使用 HTTPoision 并断言状态代码和响应主体。
新建一个混音项目
mix new api_test
将 HTTPoison 依赖项添加到 mix.exs
...
defp deps do
[
{:httpoison, "~> 1.6"}
]
end
...
运行 mix deps.get
安装 HTTPoison
。
在test/api_test_test.exs
中添加测试
defmodule ApiTestTest do
use ExUnit.Case
doctest ApiTest
test "API alive" do
resp = HTTPoison.get!("https://api.github.com")
assert resp.status_code == 200
end
end
运行 项目根目录中 mix test
的测试。
我们有几个 REST API 需要测试。 API 归其他团队所有。目前,我们使用 Node.js 和 Ava 来测试我们的 APIs.
我们最近开始探索 Elixir 作为我们的脚本语言。我们想尝试使用 Elixir 来测试 REST API。这里的问题是 - 如何使用 Elixir 测试外部网络 services/REST API?
围绕 Elixir 测试的每个 Google 搜索都指回 ExUnit,它基本上用于 Elixir 应用程序的单元测试。我们没有任何用 Elixir 或 Phoenix 编写的应用程序。
我们要做的就是端到端测试 API。如何使用 Elixir 做到这一点?使用哪些库?我知道我可以从我用 ExUnit 编写的测试中进行网络调用并验证 API 行为,但不确定它是否是正确的方法。
注意:我们已经将 JMeter 用于 API 的负载测试,但由于 API 涉及复杂的工作流,我们希望将功能测试与负载测试分开。
我认为你在答案中描述的是正确的方法。
您可以使用 ExUnit 作为测试 运行 和报告框架。在 ExUnit 中,你可以做任何你想做的事,进行网络调用,甚至解析 DOM。要测试 REST API,您可以使用 HTTPoision 并断言状态代码和响应主体。
新建一个混音项目
mix new api_test
将 HTTPoison 依赖项添加到 mix.exs
...
defp deps do
[
{:httpoison, "~> 1.6"}
]
end
...
运行 mix deps.get
安装 HTTPoison
。
在test/api_test_test.exs
defmodule ApiTestTest do
use ExUnit.Case
doctest ApiTest
test "API alive" do
resp = HTTPoison.get!("https://api.github.com")
assert resp.status_code == 200
end
end
运行 项目根目录中 mix test
的测试。