精华内容
下载资源
问答
  • let instance = await TestToken.at('合同地址请参阅上次命令部署的输出,TestToken.address') instance.getTotalUSDPriceMintedTokens() instance.setTokenUSDPrice(150) instance.getTokenUSDPrice() ...
  • 测试结果如下:3、在DataFiles中创建CSV格式的测试数据,如下图所示:4、切换到Verification中获取响应结果的access_token值,Groovy编码如下:5、运行和验证结果(TestRequestAndVerify),结果如下:
  • test 内容 var data = JSON.parse(responseBody); if (data.token) { tests["Body has token"] = true; postman.setEnvironmentVariable("token", data.token); } else { tests["Body has token"] = false...

    test  内容
     

    var data = JSON.parse(responseBody);
    if (data.token) {
      tests["Body has token"] = true;
       postman.setEnvironmentVariable("token", data.token);
    }
    else {
      tests["Body has token"] = false;
    }

     

    添加环境   

    {{token}}   取值

    展开全文
  • pytest接口测试中token和header的处理

    千次阅读 2020-05-26 17:36:46
    最近在学习pytest框架,然后遇到了一些问题,要是刚开始接触接口测试的话肯定是没有思路的。之前有深入的用过jmeter,发现好多...当我执行完登录接口后把token给put出来,然后在用户定义的的变量处定义一个token来接收

    最近在学习pytest框架,然后遇到了一些问题,要是刚开始接触接口测试的话肯定是没有思路的。之前有深入的用过jmeter,发现好多也都是想通的,记录一下,之后再用其他的框架的时候,也可以参考这个思路。

    一、jmeter中token的处理

    我相信每个公司的接口都会有token这个值的。这个token一般是先完成登录然后返回的。之前用jmeter的时候,jmeter有很多自己的插件,比如公共参数、用户定义的变量等。当我执行完登录接口后把token给put出来,然后在用户定义的的变量处定义一个token来接收登录接口put出来的这个值。然后同一个线程的其他接口都可以用这个值了。如果是不同的线程的话要用props.put。

    二、用pytest框架,token的处理

    然后现在我用pytest框架也有这个问题,我刚开始思路是执行完登录接口拿到token进行return,然后其他的接口先import这个接口,然后调用登录接口可以拿到token,但是这个时候我发现我执行其他接口的时候,总是会把登录接口再执行一遍,我觉得这样不太好。

    然后我就用pytest的fixture来处理这个情况。创建一个conftes文件,这个文件要和case在同一个package下,在这里边添加修饰器@pytest.fixture(),然后再此处调用登录接口,return出来token,然后其他的接口用到token的时候直接用就可以了,就不需要引用登录模块了。

    三、pytest框架中header的处理

    好多接口都需要header里的参数去参与生成sign,因此每个接口都需要这个header,然而header里的字段和值基本上都一样,每个接口都写一遍感觉很麻烦。刚开始我想的是也可以用fixture来处理,此刻真想吐槽我自己怎么想的。fixture这个主要是处理一些前置或者后置条件,怎么可以处理公共参数呢。

    然后我就想可以定义成一个公共方法,把这些值都放进去,return一下,其他接口中import一下,然后需要用到的地方调用一下这个方法就可以了。

    目前这样处理方便了很多。但不确定这样处理是否妥当。之后有结论了再来更新。

    展开全文
  • charset=UTF-8 header(“Authorization”,“Bearer XXXX”):代表在报文头添加一些必须的信息,这里添加的是token ResultActions.andExpect:添加执行完成后的断言 ResultActions.andExpect(MockMvcResultMatchers....

    一、 单元测试的概念

    概念:

    1. 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。在Java中单元测试的最小单元是类。
    2. 单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。执行单元测试,就是为了证明这 段代码的行为和我们期望是否一致。

    单元测试引用:

    1. 众所周知,通过spring initialize创建的Spring Boot项目会在Maven中自动携带很多starter依赖:
      在这里插入图片描述

    其中包含了一个名为spring-boot-starter-test的依赖,本文是围绕这个依赖展开。

    1. Spring Boot中引入单元测试很简单,添加如下依赖(即spring-boot-starter-test依赖):
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-test</artifactId>
       <scope>test</scope>
    </dependency>
    
    1. spring-boot-starter-test有如下几个库:

    spring-boot-starter-testUML图:
    在这里插入图片描述

    序号库名的解释
    1JUnit 5:包含兼容 JUnit 4,Java 应用程序单元测试的事实标准
    2Spring Test 和 SpringBootTest:对Spring Boot应用程序的公共和集成测试支持
    3AssertJ:流式断言库
    4Hamcrest:匹配对象库
    5Mockito:Java 模拟框架
    6JSONassert:JSON 断言库
    7JsonPath:JSON XPath

    二、单元测试的作用

    在没有接触单元测试之前我们是怎么做测试的?一般有两个方法:

    方法弊端
    方法一:启动整个应用,像用户正常操作一样。点击界面按钮,调用一个 API 等。每次测试都要启动整个项目
    方法二:在代码某个地方写一个临时入口,例如 java 的 main 方法,测试某个方法或者某个类。入口用完要删除,不然会影响项目的运行速度或效率

    在时间允许的情况下,编写单元测试是程序员对代码的自测,这是对自己代码的负责。

    写单元测试的两个动机:

    1. 保证或验证实现功能。
    2. 保护已经实现的功能不被破坏。

    三、Spring Boot引入的MockMvc的概念

    1. 什么是Mock?

    在面向对象的程序设计中,模拟对象(英语:mock object)是以可控的方式模拟真实对象行为的假对象。在编程过程中,通常通过模拟一些输入数据,来验证程序是否达到预期结果。

    1. 为什么使用Mock对象?

    使用模拟对象,可以模拟复杂的、真实的对象行为。如果在单元测试中无法使用真实对象,可采用模拟对象进行替代。

    1. MockMvc的概念

    MockMvc是由spring-test包提供,实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller的调用,使得测试速度快、不依赖网络环境。同时提供了一套验证的工具,结果的验证十分方便。

    接口MockMvcBuilder,提供一个唯一的build方法,用来构造MockMvc。主要有两个实现:StandaloneMockMvcBuilder和DefaultMockMvcBuilder。

    实例化方法实例&解释
    方法一mockMvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();通过参数指定一组控制器,这样就不需要从上下文获取了
    方法二mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();指定WebApplicationContext,将会从该上下文获取相应的控制器并得到相应的MockMvc
    1. MockMVC的基本步骤

      (1) mockMvc.perform执行一个请求。
      (2) MockMvcRequestBuilders.get(“XXX”)构造一个请求。
      (3) ResultActions.param添加请求传值
      (4) ResultActions.accept()设置返回类型
      (5) ResultActions.andExpect添加执行完成后的断言。
      (6) ResultActions.andDo添加一个结果处理器,表示要对结果做点什么事情,比如处使用print()输出整个响应结果信息。
      (7) ResultActions.andReturn表示执行完成后返回相应的结果。

    四、Service层的单元测试

    (以下图片均引自文末学习文章,因为公司项目不方便截图)

    第一步:Spring Boot中单元测试类写在src/test/java目录下,你可以手动创建具体测试类,也可以通过IDEA自动创建测试类,如下图:(注:点选并打开相应代码界面,再点击菜单栏的Navigate)

    第二步:按照第一步的方法,点击测试后,出现图一的对话框(如果想要测试的类已经存在测试类了会被列出来,也可以重新创建一个新的测试类),点击”Create New Test…”会弹出图二的对话框,可以选择是否生成setUp以及要测试的成员方法等:

    图一
    在这里插入图片描述
    图二

    第三步:至此Service层的测试类就创建好了,测试类自动生成到了src/test/java目录下项目的同级目录中,如下图:

    在这里插入图片描述

    Service层测试代码如下:

    @SpringBootTest
    @RunWith(SpringRunner.class)
    public class XXXServiceTest {
        @Resource
        private XXXService XXXService;
     
        @Test
        public void conflictTime() {
            DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            LocalDate start = LocalDate.parse("2020-10-26", dtf);
            LocalDate end = LocalDate.parse("2020-10-31", dtf);
            Integer integer = XXXService.ConflictTime("10000001", start, end);
            Assert.assertThat(integer, Matchers.notNullValue());//assertThat断言后面介绍    
       }
    }
    

    注解解释:

    @SpringBootTest:获取启动类,加载配置,寻找主配置启动类(被 @SpringBootApplication 注解的) @RunWith(SpringRunner.class):让JUnit运行Spring的测试环境,获得Spring环境的上下文的支持

    五、Controller层的单元测试

    创建测试类步骤见第四部分,此处略。

    • 第四部分只是针对Service层做了测试,但是咱么也需要对Controller层(API)做测试,这时候就用到MockMvc了,它使得你无需启动项目工程就能测试这些接口。
    • MockMvc实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller的调用,这样可以使得测试速度快、不依赖网络环境,而且提供了一套验证的工具,这样可以使得请求的验证统一而且很方便。

    Controller层部分的代码小名将分为三个代码块讲解,里面有看不懂的代码先不要着急哦😄,小名会在第五部分结尾处给大家汇总解答的,大家要坚持看到最后哟!😁

    代码块一:

    @SpringBootTest
    @RunWith(SpringRunner.class)
    @AutoConfigureMockMvc
    public class DfTaskRecordControllerTest {
     
        @Autowired
        private MockMvc mockMvc;
     
        @Before
        public void setUp() throws Exception {
           System.out.println("---------------start---------------");
           save();
           get();
           System.out.println("================end================");
        }
    

    注解解释:

    @SpringBootTest>:获取启动类,加载配置,寻找主配置启动类(被 @SpringBootApplication 注解的)

    @RunWith(SpringRunner.class)>:让JUnit运行Spring的测试环境,获得Spring环境的上下文的支持 @AutoConfigureMockMvc:用于自动配置MockMvc,配置后MockMvc类可以直接注入,相当于new MockMvc @Before:初始化方法 ,对于每一个测试方法都要执行一次

    代码块二:
        @Test
        @Transactional
        @Rollback()
        public void save() throws Exception {
            String json"{……}";
            //执行一个RequestBuilder请求,会自动执行SpringMVC的流程并映射到相应的控制器执行处理;
            mockMvc.perform(MockMvcRequestBuilders
                    .post("/XXX/save")
                    .content(json.getBytes()) //传json参数
                    .accept(MediaType.APPLICATION_JSON)
                    .contentType(MediaType.APPLICATION_JSON_VALUE)
                    .header("Authorization","Bearer ********-****-****-****-************")
            )
                    .andExpect(MockMvcResultMatchers.status().isOk())
                    .andDo(print());
        }
    

    注解解释:

    @Transactional:开启事务功能

    @Rollback(): 事务回滚,默认是true

    代码块三:
        @Test
        public void get() throws Exception{
            ResultActions resultActions = mockMvc.perform(MockMvcRequestBuilders
                    .get("/XXX/get")
                    .param("id", "**********")
                    .header("Authorization", "Bearer ********-****-****-****-************")
            );
            resultActions.andReturn().getResponse().setCharacterEncoding("UTF-8");
            resultActions.andExpect(MockMvcResultMatchers.status().isOk()).andDo(print());
     
        }
    }
    
    /get运行结果如下:

    在这里插入图片描述

    现在小名将上面的一些琐碎的知识点汇总一下:

    1. mockMvc.perform:执行一个请求
    2. MockMvcRequestBuilders.get(“/XXX/get”):构造一个请求,Post请求使用.post方法
    3. contentType(MediaType.APPLICATION_JSON_VALUE):代表发送端发送的数据格式是application/json;charset=UTF-8
    4. accept(MediaType.APPLICATION_JSON):代表客户端希望接受的数据类型为application/json;charset=UTF-8
    5. header(“Authorization”,“Bearer XXXX”):代表在报文头添加一些必须的信息,这里添加的是token
    6. ResultActions.andExpect:添加执行完成后的断言
    7. ResultActions.andExpect(MockMvcResultMatchers.status().isOk()):方法看请求的状态响应码是否为200如果不是则抛异常,测试不通过
    8. ResultActions.andDo:添加一个结果处理器,表示要对结果做点什么事情,比如此处使用print():输出整个响应结果信息

    六、断言的概念

    1. 断言(assert),是编程术语,表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。
    2. 使用断言是判断一个函数或对象的一个方法所产生的结果是否符合你期望的那个结果。

    七、新断言assertThat使用

    JUnit 4.4 结合 Hamcrest 提供了一个全新的断言语法——assertThat。程序员可以只使用 assertThat 一个断言语句,结合 Hamcrest 提供的匹配符,就可以表达全部的测试思想。

    assertThat 的优点:

    优点 1:以前 JUnit 提供了很多的 assertion 语句,如:assertEquals,assertNotSame,assertFalse,assertTrue,assertNotNull,assertNull 等,现在有了 JUnit 4.4,一条 assertThat 即可以替代所有的 assertion 语句,这样可以在所有的单元测试中只使用一个断言方法,使得编写测试用例变得简单,代码风格变得统一,测试代码也更容易维护。

    优点 2:assertThat 使用了 Hamcrest 的 Matcher 匹配符,用户可以使用匹配符规定的匹配准则精确的指定一些想设定满足的条件,具有很强的易读性,而且使用起来更加灵活。

    优点 3:assertThat 不再像 assertEquals 那样,使用比较难懂的“谓宾主”语法模式(如:assertEquals(3, x);),相反,assertThat 使用了类似于“主谓宾”的易读语法模式(如:assertThat(x,is(3));),使得代码更加直观、易读。

    assertThat 的基本语法如下:

    assertThat( [value], [matcher statement] );
    
    value :接下来想要测试的变量值; matcher statement :使用 Hamcrest 匹配符来表达的对前面变量所期望的值的声明,如果 value 值与 matcher statement 所表达的期望值相符,则测试成功,否则测试失败。

    八、Postman与Spring Boot 单元测试的区别

    • Spring Boot的单元测试主要针对方法层面,可以测试Service层这类非对外暴露的接口的类中方法,并且可一次性批量测试多个方法、支持事务回滚。
    • Postman针对接口进行http测试,我平时这个比较多,创建的测试接口可保存、分类。

    九、Postman基本用法

    Postman是一款功能强大的网页调试与发送网页HTTP请求的工具。Postman能够发送任何类型的HTTP请求(GET, HEAD, POST,PUT..),附带任何数量的参数和HTTP headers。支持不同的认证机制(basic, digest,OAuth),接收到的响应语法高亮(HTML,JSON或XML)。

    安装Postman 官方网站:https://www.getpostman.com/apps

    安装后,Postman是介样婶儿滴~~😊

    在这里插入图片描述

    详细的使用方法,小名在这里帮大家找到了一篇保姆级Postman使用教程,见文末学习文章中的第二篇就可以啦~~😄

    学习文章:

    Spring Boot干货系列:(十二)Spring Boot使用单元测试

    SpringBoot | 第十五章:基于Postman的RESTful接口测试

    展开全文
  • jwt_token_test.zip

    2019-05-21 20:43:27
    java使用jwt实现移动端api接口token认证。使用场景:app调用后台api接口用户验证。---------
  • 额。。。每个请求都有token值的传入,但是token非常易变,一旦变化,所有的接口用例都得改一遍token,工作量太大了。...class Test(unittest.TestCase): token = "8f779018-9e20-4371-93f6-838bca7c737
  • token-test-js-源码

    2021-03-11 04:16:56
    token-test-js
  • 此存储库包含一个简单的ERC-20水龙头dApp,它将向与dApp进行交互的任何人分发一个称为TestToken的ERC-20令牌。 此dApp的目的是展示如何在Harmony上构建简单的dApp。 智能合约与部署 此TestToken.sol包含两个实现...
  • 在使用render_template渲染页面时,抛出AttributeError: 'Token' object has no attribute 'test'异常。 程序环境为: Python3.6.0 Flask 1.1.0 Jinja2 3.0.1 错误原因 Python3.6.0与Jinja2 3.0.1不兼容 解决方法 ...

    错误现象

    在使用render_template渲染页面时,抛出AttributeError: 'Token' object has no attribute 'test'异常。

    程序环境为:

    Python3.6.0
    Flask 1.1.0
    Jinja2 3.0.1
    

    错误原因

    Python3.6.0与Jinja2 3.0.1不兼容

    解决方法

    升级Python解释器,使用3.6.0以上版本。
    降级Jinja2 ,使用3.0.1以下版本。

    展开全文
  • $ npm install truffle-token-test-utils 用法 松露: const tokenTransfers = require ( "truffle-token-test-utils" ) ; contract ( "ContractName" , ( accounts ) => { tokenTransfers . setWeb3 ( web3 ) ;...
  • 在使用jupyter时,抛出AttributeError: ‘Token’ object has no attribute 'test’异常。 程序环境为: Python3.6.0 Jinja2 3.0.1 错误原因 Python3.6.0与Jinja2 3.0.1不兼容 解决方法 升级Python解释器,使用3.6.0...
  • junit单元测试@Test报错的解决办法

    万次阅读 多人点赞 2016-01-12 13:22:44
    今天写了个单元测试,然后buildpath里add library选择了junit,然后出现了奇怪的现象,@Before、@After可以用,@Test就会报错(“Test is not an annotation type"),搜索了下,解决方案如下,不需要引入 import org....
  • SpringBoot 集成token实践详解

    千次阅读 2021-02-11 11:15:23
    token 自动刷新(单个 token 刷新机制,保证活跃用户不会掉线) 标准统一的 RESTFul 返回体数据格式 异常统一拦截处理 单个 token 刷新机制(介绍): [外链图片转存失败,源站可能有防盗链机制,建议将图片...
  • 基于JWT(JSON WEB TOKEN) 生成token及refreshToken实现用户认证及过期处理 【1】 【问题背景】:想实现Session共享方法以及单点登录方案 【2】【原理结构解析】:JWT三个部分:Header(头部)、Payload(负载)、...
  • 基于Token登入

    万次阅读 2018-01-07 20:27:04
    解析出userid和uuid(首先保证非空,按_拆分,判断格式),根据Redis进行检查(去除redis中的Token和key比较),再更新Token时间,返回检测结果。 销毁Token 检查一个token是否正确, 解析出userid和uuid...
  • 这样服务端就可以自动根据 token , ts ,以及设置的密钥来验证合法性。密钥过期时间在http.conf里设置。 问题: token总是验证失败,需要检查如下: 1. fastdfs_http_gen_token($file_name,$...
  • redis + jwt实现token认证

    千次阅读 2019-09-16 22:13:02
    登录授权获取token2.登出使token失效3.续期token4.获取新的token 业务场景 在前后端分离的场景下,越来越多的项目使用token作为接口的安全机制,APP或者web端使用token与后端接口交互,以达到安全的目的 拦截器 ...
  • 弹簧安全测试 一个测试spring security java config进行token认证的小项目
  • 报错日志 ...Error: Child compilation ..../node_modules/html-webpack-plugin SyntaxError: Unexpected token ) 之前我一度以为是html-withimg-loader的插件出了问题,更换版本之后还是不可以,然后我新建了个vuec
  • 以太坊:创建 ERC-20 token

    万次阅读 2019-05-10 10:10:03
    返回ERC20代币的名字,例如"My test token"。 symbol 返回代币的简称,例如:MTT,这个也是我们一般在代币交易所看到的名字。 decimals 返回token使用的小数点后几位。比如如果设置为3,就是支持0.001...
  • SpringBoot使用token简单鉴权

    千次阅读 2019-11-02 17:29:35
    本文使用SpringBoot结合Redis进行简单的token鉴权。 1.简介 刚刚换了公司,所以最近有些忙碌,所以一直没有什么产出,最近朋友问我登录相关的,所以这里先写一篇简单使用token鉴权的文章,后续会补充一些高阶的,...
  • syntax error near unexpected token `(‘ 异常解决

    万次阅读 多人点赞 2019-06-11 19:51:27
    syntax error near unexpected token `(' 脚本内容排查了很多遍都没有找到原因,执行的方式为 sh xx.sh 然后使用 source xx.sh 执行和 bash xx.sh执行都是 ok 的。 知识的了解 此时就需要了解 sh source bash 执行...
  • 前言: 在实际的开发项目中,一个对外暴露的接口往往会面临,瞬间大量的重复的请求提交,如果想过滤掉重复请求造成对业务的伤害,那就需要实现幂等! 解释一下幂等的概念: 任意多次执行所产生的影响均与...token机制...
  • BEP20代币智能合约 要求 节点:v8.9.4或更高版本 配置 truffle.config.js 怎么跑 安装依赖项和devDependencies npm install ...truffle test --network test 定制网络 步骤1:将mnemonic添加到tru
  • 以太坊教程-自己动手发布 ERC20 Token

    千次阅读 2018-11-22 10:15:52
    ERC20是以太坊网络上发行代币(Token)的一个标准协议接口,协议的github具体描述位于https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md。一个标准的协议促使了代币可以在不同的应用中...
  • GitLab升级到后续的版本之后,由于Session API已经不再支持,通过用户名/密码方式获取Access Token的方式需要换一种方式,这篇文章介绍一下一种通过使用cookie获取的方式。
  • Jmeter获取登录的token

    千次阅读 2019-05-09 11:29:42
    入门级Jmeter获取token,乱码处理
  • 关于token的知识整理

    万次阅读 2018-12-10 23:42:55
    安全性 在无状态请求时访问api接口,服务器无法判断访问者...1.用户登录 获取token (服务器) 保存token 2. 用户请求其他接口并且携带token 3. 服务器端 验证token 是否存在 token有效 验证ok 用户状态ok 如何产生t...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 123,232
精华内容 49,292
关键字:

testtoken