【问题标题】:How to test Web Services with Elixir?如何使用 Elixir 测试 Web 服务?
【发布时间】:2019-01-08 14:47:49
【问题描述】:

我们有几个需要测试的 REST API。 API 归其他团队所有。目前,我们使用 Node.jsAva 来测试我们的 API。

我们最近开始探索 Elixir 作为我们的脚本语言。我们想尝试使用 Elixir 来测试 REST API。这里的问题是 - 如何使用 Elixir 测试外部 Web 服务/REST API?

关于 Elixir 测试的每个 Google 搜索都参考了 ExUnit,它基本上用于 Elixir 应用程序的单元测试。我们没有任何用 Elixir 或 Phoenix 编写的应用程序。

我们要做的就是端到端测试 API。如何用 Elixir 做到这一点?使用哪些库?我知道我可以通过我用 ExUnit 编写的测试进行网络调用并验证 API 行为,但不确定它是否正确。

注意:我们已经有 JMeter 用于 API 负载测试,但由于 API 涉及复杂的工作流程,我们希望将功能测试与负载测试分开。

【问题讨论】:

  • 您不应该测试第 3 方 API。你应该相信它工作正常并在你的内部测试中模拟它。也就是说,我怀疑在 Elixir 宏系统中是否提供了任何东西来完成错误的任务。
  • @mudasobwa,这不是第 3 方 API。只是 QA 和开发团队不同。 QA 团队需要对 API 进行自动化功能测试。测试代码和源代码由不同存储库中的不同团队拥有。
  • 那么你对任务的描述有点误导。不管涉及多少回购,assert(conn(:get, url)) 应该没问题,如下所述:robots.thoughtbot.com/…

标签: testing automated-tests elixir web-api-testing


【解决方案1】:

我认为您在答案中描述的方法是正确的。

您可以使用 ExUnit 作为测试运行和报告框架。在 ExUnit 中,您可以做任何您想做的事情,进行网络调用,甚至解析 DOM。要测试 REST API,您可以使用 HTTPoision 并断言状态代码和响应正文。

创建一个新的混合项目

mix new api_test

mix.exs添加HTTPoison依赖

...
  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 运行测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 2018-05-30
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多